2013-04-22 70 views
6

我正在尋找一個簡單的示例和/或如何使用.ajaxerror參數的解釋。如何使用jquery ajax錯誤參數

這個問題(jQuery ajax error function)指向這個我不明白的jQuery文檔(http://api.jquery.com/jQuery.ajax/)。

我有下面的代碼不起作用,我不明白爲什麼。我希望錯誤的參數會有所幫助:

的jQuery:

<script> 
    // wait for the DOM to be loaded 
    $(document).ready(function() { 
     // bind 'myForm' and provide a simple callback function 
     $("#myForm").submit(function(){ 
       var user_input = $("#signup_id_email").val(); 
       $.ajax 
       ({ 
         type: "POST", 
         url: "ajax_test.php", 
         dataType: 'json', 
         data: {email: user_input}, 
         **error: ""** 
       }) 
       .done(function(r) 
       { 
        $("#answer_id").append(r.email); 
       }); 
      }); 
    }); 
</script> 

PHP(ajax_text.php)

<?php 
echo json_encode($_POST); 
?> 
+0

嗨,你甚至有一個POST請求走出去服務器? – 2013-04-22 21:19:21

+0

如果您熟悉Chrome開發工具,請在網絡選項卡下進行檢查,以確保您收到了您的請求中的回覆 – adamb 2013-04-22 21:24:56

回答

12

的$就參數對象的錯誤 「財產」 一詞爲$ .ajax方法提供一個稱爲閉包的回調函數。換句話說,如果在ajax請求期間發生錯誤,您需要提供一個匿名函數來處理錯誤。這是一個基本的例子。

$.ajax({ 
     type: "POST", 
     url: "ajax_test.php", 
     dataType: 'application/json', 
     data: {email: user_input}, 
     success: function(result) { 
       // You can use success instead of .done 
     }, 
     error: function(requestObject, error, errorThrown) { 
      alert(error); 
      alert(errorThrown); 
     } 
    }); 

請記住,只有在請求實際出錯時纔會調用錯誤回調函數。如果您的代碼根本沒有返回任何內容,但請求仍然返回狀態200,那麼您將不得不在成功回調函數中處理該異常。

希望這會有所幫助。

編輯:請注意,我刪除了鏈接事件的使用,現在所有回調函數都在傳遞給$ .ajax的原始參數對象內處理。

2

我懷疑你甚至發送了一個請求。你的空白處於關閉狀態。

Javascript在語句結束時不需要分號。正因爲如此,它有時會在不需要它們的地方推斷出它們。

試着把'({'放在'$ .ajax'的同一行上,你沒有看到錯誤,因爲沒有。$ .ajax是一個有效的語句,儘管它什麼都沒有。同樣,你的括號內創建的對象是一個有效的對象,即使什麼都不做也。

$.ajax({ 
    type: "POST", 
    ... 
}).done(function(r) { 
    .... 
}); 

要回答你原來的問題,錯誤接受一個函數作爲參數。這個函數3參數:

  1. XHR(請求)
  2. 請求
  3. 拋出的錯誤狀態(可以是不確定的)

一個例子是這樣的:

$.ajax({ 
    ... 
    error: function(xhr, status, error) { 
     alert("oh no!"); 
    } 
})