2012-07-25 24 views
1

我有一個AJAX聲明是這樣的:JQuery的阿賈克斯成功永遠達不到

$.ajax({ 
      type: "POST", 
      dataType: 'json', 
      url: "DBDeleteList.php", 
      data: {listID: listID}, 
      success: function(html){ 
       /* Succesfully Updated DB */ 
       alert('Saved!'); 
       $(this).parents('li').remove(); 
       $('#sortableLoader').load('index.php #sortableMenu'); 
      } 
}); 

它工作正常,並觸發PHP文件和一切,數據庫修改正常工作。

唯一的問題是,即使成功,「成功:」部分也不會觸發。

感謝您的任何提示。

+2

你可以使用firebug來查看你的php頁面返回的狀態碼嗎? – Sergey 2012-07-25 21:55:06

+0

您是否嘗試在Firebug中看到控制檯輸出? – Chandu 2012-07-25 21:55:07

+0

驗證給定url的響應是否爲有效的JSON響應。 – 2012-07-25 21:55:42

回答

4

你有沒有看到返回錯誤。你正在發佈到php,但無論你在你的帖子後返回,你的ajax調用不喜歡。包括這樣的事情你成功後的功能調試:

error: function (jqXHR, exception) { 
    if (jqXHR.status === 0) { 
     alert('Not connect.\n Verify Network.'); 
    } else if (jqXHR.status == 404) { 
     alert('Requested page not found. [404]'); 
    } else if (jqXHR.status == 500) { 
     alert('Internal Server Error [500].'); 
    } else if (exception === 'parsererror') { 
     alert('Requested JSON parse failed.'); 
    } else if (exception === 'timeout') { 
     alert('Time out error.'); 
    } else if (exception === 'abort') { 
     alert('Ajax request aborted.'); 
    } else { 
     alert('Uncaught Error.\n' + jqXHR.responseText); 
    } 
} 

還我會用螢火蟲來幫忙看看發生了什麼

+0

請注意,jqXHR.status在其他情況下也是「0」。如果我啓動ajax請求並重新加載頁面,則啓動的ajax請求將被取消,並返回狀態0. 您最好使用'navigator.onLine'來檢查用戶是否連接。 – 2014-08-08 14:12:24

+0

這個答案拯救了我的一天!感謝:D – Yashasvi 2015-12-23 12:28:28

0

還是不明白什麼$(this)阿賈克斯函數調用內部是指,這是我明白它指的是什麼,但我懷疑它有父母嗎?

爲什麼當您期待json數據時,您在成功處理程序中爲返回的數據使用變量html

你確定這不是一個問題,畸形的json導致解析錯誤?

嘗試留出的數據類型,看看它返回,並添加錯誤處理程序:

$.ajax({ 
    type: "POST", 
    url: "DBDeleteList.php", 
    data: { listID: listID }, 
}).done(function(html) { 
    console.log(html); 
}).fail(function(a,b,c) { 
    console.log('error'+'-=-'+a+'-=-'+b+'-=-'+c); 
}); 
0

創建一個指向Ajax調用之前問題的元素,否則「$(本)」中你的成功是指xhr的迴應。確保響應是正確的內容類型(application/json)。

var $el = $(this); 
$.ajax({ 
     type: "POST", 
     dataType: 'json', 
     url: "DBDeleteList.php", 
     data: {listID: listID}, 
     dataType:"json", 
     contentType : 'application/json', 
     processData:false, 
     success: function(html){ 
      /* Succesfully Updated DB */ 
      alert('Saved!'); 
      $el.parents('li').remove(); 
      $('#sortableLoader').load('index.php #sortableMenu'); 
     } 
}); 

同時驗證響應的json是否有效。如果其中任何一個都沒有得到滿足,在大多數情況下,它會默默地失敗。

0

在我的情況下,問題是一個錯字。我寫了success,但sucess