关于asp.net网页中Button按钮的OnClientClick事件中,使用ajax不起作用的问题
搜收录网整理 发布日期:2020/7/9 16:51:17
今天修改网页的时候,给一个服务器空间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.soshoulu.com/ziyuan/view17838.htm
相关信息