2013-05-21 65 views
3

我正在使用ASP.NET WebApi來構建我的REST服務。在很多情況下,我只需要返回一個200 OK消息(沒有內容)。該反應通常看起來像(這是一個POST):jQuery 2.0 + ASP.NET WebApi POST空響應=失敗

return this.Request.CreateResponse(HttpStatusCode.OK); 

return new HttpResponseMessage(HttpStatusCode.OK); 

無論是在jQuery的1.8效果不錯,但那是因爲該版本允許的「」一個responseText的使用(它然後嘗試運行parseJSON)。

然而,在jQuery的2.0,它在deferred.fail()回調結束,而不是,因爲它認爲,一個失敗parseJSON(對空文本)無效..

如何解決這個問題?

UPDATE

使用該

例JS調用:

var deferred = $.ajax({ 
    "type": "POST", 
    "url": something, 
    "contentType": "application/json; charset=utf-8", 
    "dataType": "json", 
    "data": JSON.stringify(whatever) 
}); 

deferred.fail(function (msg) { 
    // it ends up in here 
}); 

通話可能導致JSON響應,但往往只需要返回200 OK,沒有身體,這是爲什麼我仍然指定dataType/contentType(事先沒有辦法知道它是否具有body,服務器有邏輯決定)。

+0

您可以添加$就調用的例子? –

+0

好的,我添加了JS ajax調用示例 – automaton

回答

4

您的dataType設置爲JSON這意味着您希望從服務器獲取JSON。

您可以嘗試將其更改爲text以查看是否可以解決問題。

或者,如果它不總是空白,請嘗試將其完全排除,因爲理論上jQuery應該能夠識別格式。

請參閱該文檔:

http://api.jquery.com/jQuery.ajax/