我使用下面的jQuery通过数据服务插入数据。事件尽管我得到了状态响应201,并且数据被成功地插入到我的数据库中,但是系统仍然将其视为错误并给出“失败”警告?
这里我漏掉了什么?
$.ajax({
type: "POST",
url: "http://localhost:49223/Form/WebDataService.svc/XMLForm(guid'1eaef3a0-d6df-45bf-a8f6-3e7292c0d77e')/XMLRecord/",
data: JSON.stringify(record),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function() {
alert("Success");
},
error: function(xhr) {
alert("fail");
}
});
更新:
来自Fire Bug的调试消息:
Preferences
POST http://localhost:49223/Form/WebDataService.svc/X...ef3a0-d6df-45bf-a8f6-3e7292c0d77e%27)/XMLRecord/
POST http://localhost:49223/Form/WebDataService.svc/XMLForm(guid%271eaef3a0-d6df-45bf-a8f6-3e7292c0d77e%27)/XMLRecord/
jquery....min.js (line 127)
POST http://localhost:49223/Form/WebDataService.svc/X...ef3a0-d6df-45bf-a8f6-3e7292c0d77e%27)/XMLRecord/
POST http://localhost:49223/Form/WebDataService.svc/XMLForm(guid%271eaef3a0-d6df-45bf-a8f6-3e7292c0d77e%27)/XMLRecord/
201 Created 6.7s
POST http://localhost:49223/Form/WebDataService.svc/X...ef3a0-d6df-45bf-a8f6-3e7292c0d77e%27)/XMLRecord/
POST http://localhost:49223/Form/WebDataService.svc/XMLForm(guid%271eaef3a0-d6df-45bf-a8f6-3e7292c0d77e%27)/XMLRecord/
201 Created
get readyState 4
get responseText "{ "d" : {\r\n"__metadata"...\')/XMLForm"\r\n}\r\n}\r\n} }"
get responseXML null
get status 201
get statusText "Created"
发布于 2012-10-17 22:41:58
您必须发送{ dataType:'text‘}才能让成功函数处理jQuery和空响应。
发布于 2010-02-11 10:05:36
解决方案:
即使我仍然不能弄清楚我是如何从前面的代码中得到错误的,我还是得到了这个对我有效的替代解决方案。(至少现在是这样)。
希望听到更多的想法
谢谢大家
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
url: "http://localhost:49223/Form/WebDataService.svc/XMLForm(guid'1eaef3a0-d6df-45bf-a8f6-3e7292c0d77e')/XMLRecord/",
data: JSON.stringify(record),
complete: function(xhr) {
if (xhr.readyState == 4) {
if (xhr.status == 201) {
alert("Created");
}
} else {
alert("NoGood");
}
}
//
// success: function(data) {
// alert("Success");
// },
// error: function(xhr) {
// alert("fail" + xhr);
// }
});
发布于 2016-11-18 06:16:05
这并不是因为没有内容的201必然被认为是无效的,而是因为解析空字符串("")是一个JSON解析错误。
此行为可以全局更改,也可以通过设置dataFilter按请求更改。
$.ajaxSetup({
dataFilter: function(data, dataType) {
if (dataType == 'json' && data == '') {
return null;
} else {
return data;
}
}
});
https://stackoverflow.com/questions/2233553
复制相似问题