如何在jQuery中处理POST请求的响应
How to handle response of a POST request in jQuery
我正在尝试将一些数据POST到我的ASP.NetMVCWebneneneba API控制器,并尝试在响应中获取这些数据。我有下面的帖子脚本:
$('#recordUser').click(function () {
$.ajax({
type: 'POST',
url: 'api/RecordUser',
data: $("#recordUserForm").serialize(),
dataType: 'json',
success: function (useremail) {
console.log(useremail);
},
error: function (xhr, status, err) {
},
complete: function (xhr, status) {
if (status === 'error' || !xhr.responseText) {
alert("Error");
}
else {
var data = xhr.responseText;
alert(data);
//...
}
}
});
});
这个脚本的问题是,每当我试图发布数据时,jQuery都会返回"error"而不是"success"。
我已经确认我的控制器没有问题。无论何时发出请求,我都可以在调试模式下进入我的api方法,并且可以看到它正在从POST请求中获取数据并将其返回。这个控制器很简单:
public class RecordUserController : ApiController
{
public RecordUserEmailDTO Post(RecordUserEmailDTO userEmail)
{
return userEmail;
}
}
我不知道如何让jQuery打印出任何有用的错误消息。目前,当我尝试使用Chrome控制台调试jQuery代码时,它显示了一个空的xhr.responseText,"err"对象中没有任何内容,"status"设置为"error",正如你所看到的,这并没有多大帮助。
我尝试过的另一件事是直接从控制台运行以下代码:
$.ajax({
type: 'POST',
url: 'api/RecordUser',
data: {"Email":"email@address.com"},
dataType: 'json',
success: function (useremail) {
console.log(useremail);
},
error: function (xhr, status, err) {
console.log(xhr);
console.log(err);
console.log(status);
alert(err.Message);
},
complete: function (xhr, status) {
if (status === 'error' || !xhr.responseText) {
alert("Error");
}
else {
var data = xhr.responseText;
alert(data);
}
}
});
即使用相同的脚本,而不实际点击按钮并提交表单。令人惊讶的是,这得到了正确的响应,我可以在控制台中看到我的数据打印出来。对我来说,这至少意味着我的Web API控制器工作正常,但我不知道为什么它在单击按钮或提交表单时不起作用,并进入"错误"而不是"成功"。
我没有发现我的方法中有任何错误,如果有人能帮我在表格发布时回复我,我会很高兴。
根据Alnitak的建议,我使用了complete
回调以及success
和error
回调。从我的代码中删除complete
解决了这个问题。
感谢Alnitak。
相关文章:
- 当我在form_for中的text_field_tag中点击Enter时,如何禁止发出POST请求
- 为什么 AJAX POST 请求不起作用
- Ajax POST请求没有'我不了解PHP
- 防止双击执行两次jQuery post请求
- Javascript XMLHttpRequest——只有第一个POST请求有效
- 如何使用Javascript获取POST请求填充的元素的值
- NodeJS中POST请求的请求体为null
- 在Fiddler JavaScript中识别POST请求
- 使用application/x-www-form-urlencoded使用node.js在post请求中发送数组
- 打开一个选项卡,并在firefox网络扩展中向其发出POST请求
- 通过AJAX向同一页面发送POST请求,并使用$_POST获取值
- Ajax Post请求不起作用
- 如何在cloud9中向server.js发送post请求
- mootools表单json post请求
- 可以'无法在CasperJS中复制POST请求
- 使用用户名/API令牌javascript的Jenkins POST请求
- 在表单上注入javascript以发送post请求
- 使用javascript在post请求中传递用户输入变量
- 如何使用javascript进行post请求
- 如何在Javascript中通过POST请求发送XML数据