ajax中的post方法中回調函數不執行的問題


  前一段時間接觸了JQuery Ajax中的.post()方法和.get()方法,感覺到ajax的簡潔和強大,當用到.post()方法時,去W3上查找相關的使用方法,感覺十分簡單,用法很明了,然后,直接根據自己的需要(js將數據post給php寫入數據庫,然后返回給js一個值)開寫了,寫完了,運行,竟然不行!然后仔細地對比我的代碼和demo的不同,為了查找錯誤,將我的代碼寫的幾乎和demo相同了,但是還是無法在js中獲得php的數據。

  這里先回憶一下.post()方法。

  

jQuery.post(url,data,success(data, textStatus, jqXHR),dataType)
參數 描述
url 將請求發送到的url
data 發送的數據(可選)
success(data, textStatus, jqXHR)

執行成功后的回調函數,參數均可選,data是返回的數據,

textStatus是函數的狀態,也可以加入jqXHR得到函數

的返回狀態

dataType 預期的服務器相應的數據類型

  經過仔細的對比,發現js的代碼已經不能再改了,然后我開始看php的代碼,發現,跟網上唯一不同的是,我增加了一個插入數據庫的操作,難道是這個的原因?我把連接數據庫、插入數據庫的操作通通注釋掉了以后,成功了~~~(必然啊,跟網上的demo不能再一樣了)。

  這是為什么呢,然后開始在網上查資料,突然看到了post()函數的時間問題,大體意思是,當我url連接到插入數據庫的php界面時,需要一定的執行時間插入數據庫,當我的click函數執行了,刷新了之后,回調函數還沒有機會執行post就完成了,所以無論我怎么刷新都沒變化。

  

$.ajax({url:c_url,
       timeout:3000,
      success: function(data){alert("aaa");}
      });

  加入超時限制,測試之后,發現function也是能執行的,很明顯是超時的問題。插入數據庫拖慢了post執行成功回調的時間,於是,我將連接數據庫和插入數據庫單獨加入一個新建的php頁面,然后,可以得到數據了。

  這是我最后的js代碼:

 1 $(document).ready(function(){
 2                      $("a").click(function(){
 3                             var c_url = 'http://localhost/test/check.php'; 
 4                             var jj;
 5                             $.post("db.php",{id:"5"});    
 6                             $.post("check.php",{},function(data){jj=data;$("#tname").html(data);}).success(function() { alert("second success"); })
 7                     .error(function(a) { alert("error"+a.ResponseText);alert(json_last_error ()); })
 8                     .complete(function() { alert("complete"); });
 9                                           $("#tname").html(data);
10                                          });
11                                         
12                           });

  其中,check.php只有單獨定義的一個數組返回用於測試是否收到。

  至此,算是結束了,不過這樣執行,html方法改變了標簽內容,但是在頁面上顯示一下就突然刷新沒了,還沒有解決。希望各位大神指點~

  第一次接觸ajax就碰上了這樣的問題,以后還是要系統地學一下。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM