今天修改网页的时候,给一个服务器空间Btton按钮加了一个OnClientClick客户端事件,当验证不通过是不执行服务器端OnClick事件。OnClientClick验证函数中。使用jquery 的post方法,修改完之后发现,只能执行客户端的验证,ajax事件并不执行,无论post中返回ture还是false,都没有任何作用。错误代码如下:
$.post("/ajax/users.ashx", { _type: "getustools", cls: "16" },
function (data) {
if (data == "0") {
Dialog2.open(420, 439);
return false;
}
});
分析后意识到这是因为post方法是异步执行。所以,当js执行到post的时候。就不会管post的返回了。就直接跳过了post函数体里的代码。解决方法是使用jquery的ajax函数。在ajax可以设置一个参数。async,把async设置为false,就不在是异步执行了,就是同步执行了。这样就完美解决了这个问题。代码如下:
$.ajax({
url : "/ajax/users.ashx",
data:{ _type: "getustools", cls: "16" },
cache : false,
async : true,
type : "POST",
dataType : 'text',
success : function (result){
return result;
}
});
修改完之后,运行程序发现问题并没有解决,上网搜索下,出错的原因是在success的回调函数中直接return,至于为什么不能这么做还不是太清楚。正确解决办法如下
var ret = null;
$.ajax({
url : "/ajax/users.ashx",
data:{ _type: "getustools", cls: "16" },
cache : false,
async : true,
type : "POST",
dataType : 'text',
success : function (result){
ret = result;
}
});
return ret;
至此OnClientClick事件中,使用ajax不起作用的问题完美结局
信息网址:http://www.khcha.com/ziyuan/view17838.htm
