簡體   English   中英

為什么jquery ajax回調函數不起作用?

[英]Why does jquery ajax callback function not work?

我在jQuery ajax中遇到一個簡單的回調函數問題。 谷歌不會幫助,堆棧溢出也不會,所以我想這可能不是特定的東西,而是我無知的東西。 對我來說代碼看起來應該是這樣的。

那么,這是代碼:

function sendMessage(message)
{
//Establish connection to php script
$.ajax({
    type: 'POST',
    url: 'action/chat/test.php',
    success: function(feedback){

        alert(feedback);

    }
}).error(function(){
    //Do some error handling here
});
}

在test.php中它簡單地說

<?php
    echo "called";
?>

據我所知,“被叫”應該被警告 - 但事實並非如此。 我已經檢查過調用函數sendMessage()(現在參數消息無關緊要)。

有誰有想法嗎?

更新:還有一點需要注意,請確保使用某種調試器,如firebug。 然后,您可以轉到網絡選項卡並手動查看請求URL和響應,以查看它是否收到200響應或內部服務器錯誤等。

嘗試添加console.log(data); 在您的成功函數中查看是否有任何返回。

你也可以使用.always(data)

function sendMessage(message)
{
  //Establish connection to php script
  $.ajax({
      type: 'POST',
      url: 'action/chat/test.php'   
  }).done(function(data) { console.log(data); })
    .fail(function() { alert("error"); })
    .always(function() { alert("complete"); });
}

來自文檔:

棄用注意: jQuery 1.8中不推薦使用jqXHR.success(),jqXHR.error()和jqXHR.complete()回調。 要准備最終刪除的代碼,請使用jqXHR.done(),jqXHR.fail()和jqXHR.always()。

僅供參考,有一種行為可能最終會像這樣(即未調用done())。

這里是:

  1. 假設您期望一個JSON對象(您使用“Accept”mime類型請求它)。
  2. 假設Json字符串無效。

在這種情況下,從不調用done(),但always()將被調用。 在always()中,您將獲得“嚴格”格式化的答案作為純文本。

這可能是錯誤處理。 如果你想處理錯誤,你可以給另一個屬性你傳遞給ajax的對象,它是“錯誤”,也是處理頁面超時的“超時”。 查找$ .ajax函數,您將找到這些屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM