8

我正在寻找一个简单的示例和/或说明如何error使用.ajax.

这个问题(jQuery ajax 错误函数)指向我不理解的这个 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);
?>
4

2 回答 2

16

$.ajax 参数对象的错误“属性”用于为 $.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 的原始参数对象内处理。

于 2013-04-22T21:33:07.870 回答
2

我怀疑你甚至发送请求。您的空白已关闭。

Javascript 不需要在语句末尾使用分号。因此,它有时会在您不想要它们的地方推断它们。

尝试将 '({' 与 '$.ajax' 放在同一行。您没有看到错误,因为没有错误。$.ajax 是一个有效的语句,即使它什么也不做。同样,您在括号内创建的对象是一个有效的对象,即使它也不做任何事情。

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

要回答您的原始问题,错误将函数作为参数。此函数按以下顺序接受 3 个参数:

  1. XHR(请求)
  2. 请求的状态
  3. 抛出的错误(可以未定义)

一个示例如下所示:

$.ajax({
    ...
    error: function(xhr, status, error) {
        alert("oh no!");
    }
})
于 2013-04-22T21:34:51.260 回答