2014-01-08 100 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."]) 
} 
}); 
相關問題