当前位置:  开发笔记 > 后端 > 正文

如何将与AJAX请求相对应的错误传递给客户端并在客户端处理?

如何解决《如何将与AJAX请求相对应的错误传递给客户端并在客户端处理?》经验,为你挑选了1个好方法。

我有以下表格供我的用户更改他们的电子邮件地址.

:

单击保存按钮(其代码未显示)后,表单将使用以下jQuery代码ajaxly发布到服务器:

$(".save_button").click(function() {
    var $form = $("#email_change_form")
    url = $form.attr("action");

    $.post(url, $form.serialize(), 
      function(data) {
          //upon success, the server returns the new email (data.email) in a json dictionary. 
        },
        "json"
      );      
    }
  })

一旦服务器收到POST,它就需要验证新电子邮件在数据库中是否已经存在(即电子邮件需要是唯一的).假设服务器检测到重复的电子邮件,我不知道如何将错误传回客户端.我很想在json字典中添加一个条目"duplicate_email:true"并将其返回给客户端.我不知何故觉得这不是正确的做法.

请为此方案建议正确的方法.服务器应该如何将错误传递回客户端?如何在客户端捕获错误?谢谢.



1> mahemoff..:

如果您想使用Right Way™,请使您的服务RESTful.在这种情况下,适当的状态代码可能是"409 Conflict",维基百科将其定义为"表示由于请求中的冲突而无法处理请求,例如编辑冲突".(另请参阅REST HTTP状态代码以确认验证失败或重复无效.)

因此,让您的服务器输出"409 Conflict"标题,并在您的客户端中检查状态.$ .post()不会这样做,因为你只能注册成功处理程序,所以你需要使用$ .ajax(),如下所示:

$.ajax({
  statusCode: {
    409: function() {
      alert('duplicate');
    }
  }
});

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有