關于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.respectj.cn/ziyuan/view17838.htm
相關信息
都挺好在线观看