2014-01-08 76 views
0

在我的小服务器上,我有一个名为/ assign的POST方法。它需要一些表单参数,并返回200成功和其他错误代码,当出现错误 - 没有JSON或HTML或文本或其他任何东西。使用jQuery进行AJAX调用是否必须返回数据?

我用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浏览器,网络检查显示请求作为一个200码返回。但是,总是调用错误函数; textStatus变量就像“parseerror”。一些谷歌搜索表明,这是由于无法解析返回的数据(这是有道理的,因为没有返回的内容。)

那么,有没有办法忽略内容的缺乏?

编辑:我想能够没有返回的内容,不修改服务器,所以它返回JSON或其他东西。

+0

不是一个真正的答案,但我通常会返回“真实”或类似的东西,当我不真的想要返回响应。 – bhamlin

+2

你正在返回的响应类型是什么?设置dataType为文本,看看是否奇迹般地解决了你的问题。 – epascarello

+0

成功:function(){ window.location.href =“/ current”; }改为成功:function(result){ window.location.href =“/ current”; }?可能会按预期工作 – niko

回答

1

是否AJAX调用使用jQuery不得不返回的数据?

是的,但是,认为缺乏数据也是数据。如果您的服务器返回application/json内容类型,则返回的数据必须与该内容类型匹配。 application/json有效缺少数据的示例为{},[]null,而非空字符串。因此,如果当前contentType是application/json,则必须返回上述三个之一,或者将contentType更改为其他可以为空字符串的其他值,例如text/plain

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."]) 
} 
}); 
相关问题