更好地理解AJAX

时间:2014-12-11 11:15:29

标签: javascript php jquery ajax

我已经使用AJAX一段时间了,我可以通过ajax提交表单,我可以通过ajax重新加载Div,通过ajax添加,编辑和删除。我现在的目标是更好地理解如何显示错误消息。

我认为是错误消息 假设表单要求提交名称,当用户未输入其姓名并点击提交按钮时,应显示错误消息,要求用户输入所需信息。

目前我在AJAX的success部分管理这个,这是正确的方法吗?如果是,那么什么是AJAX error: function?用户未输入所需信息的错误消息是否应通过error: function显示?

这就是我AJAX调用的样子,我想改进它。

$.ajax({
    url: 'demo.php', //your server side script
    data: $("#form").serialize(),
    type: 'POST',
    beforeSend: function () {
        $('#dvloader').show();
    },
    success: function (data) {
    $('#dvloader').hide();
    $("#message").html(data);
    }
});

我也想知道隐藏加载gif是否也应该在success旁边,虽然它有效,但我想知道这是否是正确的方法。

我将非常感谢任何人对此的反馈。

4 个答案:

答案 0 :(得分:1)

  

目前我在AJAX的成功部分管理这个,这是正确的方法吗?

这有点主观。

  

如果是,那么什么是AJAX错误:函数用于?

这主要是针对HTTP错误(例如,当服务器端代码没有按照您期望的方式工作时),但是如果(例如)JSON响应格式错误且无法解析,它也会触发。


如果通过表单提交不适当的数据,您的服务器端代码应抛出HTTP错误代码(在这种情况下错误处理程序将触发),但是standard status codes似乎没有适合于此,并不是处理问题的常用方法。

答案 1 :(得分:1)

error是在ajax调用失败的情况下调用的函数(如未找到的url)。它与您想要的自定义错误验证无关。


在您的情况下,您希望在PHP代码中进行验证(即是否提交了名称?)。并返回true(或false) - 或实际上你想要的任何东西,重点是定义它是否正常

然后,在success回调函数中,显示(或不显示)错误消息,具体取决于返回的值。


但是,如果您的控件就像在此字段中有值一样简单吗?您可能不希望使用ajax调用,但javascript / jquery验证之前< / strong>提交。

答案 2 :(得分:1)

beforeSend: - 在发送ajax请求之前 success: - 当请求成功并返回某些内容时 error: - 当ajax请求失败时(技术上)

对于超时错误,您使用error:回调:

$.ajax({
    ...
    timeout: 1000,
    error: function(jqXHR, status, error) {
        if(status==="timeout") {
           //do something on timeout
        } 
    }
});​

对于用户定义的错误(即来自PHP),您使用success:回调:

$.ajax({
    ...
    success: function (data, status, jqXHR) {
        if (data == something)
           // error
    }
});

答案 3 :(得分:0)

作为一种常用方法,许多开发人员将前端错误后端错误分开:

前端错误缺少输入文字,或双击submit按钮。这种错误通常在beforeSend:函数中进行管理,因为发送缺少数据的AJAX请求会浪费时间。您可以使用here中所述的简单return false语句停止请求。很多人也使用效果很好的JQuery validation plugin

作为后端错误,有些值未经您的服务器端语言(PHP或其他语言)验证,或者更多技术问题,如内部服务器错误或超时。在这种情况下,您可以使用error:函数以及@Forien所解释的函数,将errorStatus值分开,以便为用户提供更可读的反馈。

希望这有帮助