在的WebAPI,說我回包裹在一個HTTP響應的字符串:ASP.NET WebAPI:如何控制返回給客戶端的字符串內容?
return Request.CreateResponse(HttpStatusCode.BadRequest, "Line1 \r\n Line2");
當調用從jQuery的這個動作,響應文本返回前處理。所以在XHR,我得到的是這樣的:
function success(xhr) {
alert(xhr.responseText); // alerts ""Line1 \\r\\n Line2""
}
換句話說,該字符串被雙引號括起來,和特殊字符獲取逃脫,使他們出現在輸出(實際的警告是「線路1 \ r \ n Line2「,因此換行符不會被保留,而是被編碼並顯示在響應文本中)。
我可以通過刪除引號並在客戶端上替換換行,像這樣解決這個問題:
var responseText = xhr.responseText.substr(1, xhr.responseText - 2)
.replace('\\r', '\r').replace('\\n', '\n');
但是,有沒有辦法告訴的WebAPI如何格式化字符串的反應?例如,不要用雙引號包裝它們並轉換轉義字符?
謝謝這正是我一直在尋找。最後一個問題,這是更好的:介質類型格式添加到配置和使用「文本/純」作爲第三個參數來CreateResponse,或使用新的PlaintTextFormatter()作爲第三個參數? – danludwig
我贊成第一個選項,因爲Web API會從配置中找到合適的格式化程序。如果你改變格式化程序,你只需要在一個地方做。 –
爲什麼jQuery的ajax將響應解釋爲錯誤? –