在我的小服务器上,我有一个名为/ assign的POST方法。它需要一些表单参数,只需返回200表示成功,其他错误代码表示出错时 - 没有json或html或文本或其他任何内容。
我使用jQuery编写了一个ajax调用。它看起来像这样:
var formData={};
formData["vm-name"]=$("input#vm-name").val();
formData["vm-address"]=$("input#vm-address").val();
$.ajax({
url: "/api/redirects",
type: "POST",
data: formData,
success: function(){
window.location.href="/current";
},
error: function(data, textStatus, jqXHR){
permitSubmission();
errorMessage(["Network error. Try again."])
}
});
在我的服务器上接受数据,方法执行,然后返回200.在Chrome中,网络检查员将请求显示为返回200代码。但是,始终调用错误函数; textStatus变量类似于“parseerror”。一些谷歌搜索表明这是由于无法解析返回的数据(这是有道理的,因为没有返回的内容。)
那么,有没有办法忽略内容不足?
编辑:我希望能够没有返回内容,不能修改服务器以便返回JSON或其他内容。答案 0 :(得分:1)
使用jQuery调用AJAX是否必须返回数据?
是的,但是,考虑到缺乏数据也是数据。如果您的服务器返回application/json
内容类型,则返回的数据必须与该内容类型匹配。 application/json
的有效缺少数据的示例包括{}
,[]
或null
,而不是空字符串。因此,如果当前contentType是application / json,则必须返回上述三个中的一个,或者将contentType更改为可以为空字符串的其他内容,例如text/plain
。
答案 1 :(得分:0)
您可以尝试定义请求应返回的数据类型:
$.ajax({
url: "/api/redirects",
type: "POST",
data: formData,
dataType: "text",
success: function(){
window.location.href="/current";
},
error: function(data, textStatus, jqXHR){
permitSubmission();
errorMessage(["Network error. Try again."])
}
});