Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 与AJAX请求对应的错误应该如何传递给客户端并在客户端处理?_Jquery_Ajax_Django - Fatal编程技术网

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

Jquery 与AJAX请求对应的错误应该如何传递给客户端并在客户端处理?,jquery,ajax,django,Jquery,Ajax,Django,我有以下表格供我的用户更改他们的电子邮件地址 <form enctype="multipart/form-data" id="email_change_form" method="post" action="/my_account/"> <table> <tr> <td> <label for="id_email">E-mail address</label>: </td> <t

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

<form enctype="multipart/form-data" id="email_change_form" method="post" action="/my_account/">
<table> 
<tr> 
  <td> 
    <label for="id_email">E-mail address</label>:
  </td> 
  <td> 
    <input name="email" value="a@a.com" maxlength="75" type="text" id="id_email" size="30" /> 
  </td> 
  <td class="error_email">
  </td> 
</tr> 
</table> 
<input type="hidden" name="form_id" value="email_change_form" /> 
</form>
服务器收到帖子后,需要验证数据库中是否已经存在新电子邮件(即,电子邮件需要唯一)。假设服务器检测到重复的电子邮件,我不确定如何将错误反馈给客户端。我很想在json字典中添加一个条目“duplicate_email:true”,并将其返回到客户端。一、 不知何故,我觉得这不是正确的方法


请针对这种情况建议正确的方法。服务器应该如何将错误传递回客户端?如何在客户端捕获错误?谢谢。

最佳做法可能是返回如下错误对象:

{error:true,
 errorCode:123,
 errorMessage:"Duplicate Email",
 errorDescription:"The email you entered (john@johndoe.com) already exists"
}
$.ajax({
  statusCode: {
    409: function() {
      alert('duplicate');
    }
  }
});

然后,您可以跟踪特定于应用程序的错误代码/消息列表。

如果您希望以正确的方式执行此操作™, 尽你所能。在这种情况下,合适的解释可能是“409冲突”,Wikipedia将其定义为“表示由于请求中的冲突(例如编辑冲突)而无法处理请求”。(另见。)

因此,让服务器输出一个“409冲突”标题,并在客户端中检查状态。$。post()不会这样做,因为您只能注册一个成功处理程序,所以您需要像这样使用$.ajax():

{error:true,
 errorCode:123,
 errorMessage:"Duplicate Email",
 errorDescription:"The email you entered (john@johndoe.com) already exists"
}
$.ajax({
  statusCode: {
    409: function() {
      alert('duplicate');
    }
  }
});

`我很想添加一个条目“replicate_email:true”`这正是您需要做的:)谢谢您的解决方案。然而,对于我正在工作的原型来说,RESTful有点过头了。有了这一点,这种方法肯定是我以后会考虑的。干杯,当然。与其他技术相比,这无疑是更多的前期设计和API争论,对于快速原型来说并不总是有意义。感谢您的解决方案。由于我正在开发一个原型,现在,我决定使用您的简化版本——使用errorMessasge字段创建一个error对象。干杯