WebAPI で、HTTP 応答でラップされた文字列を返すとします。
return Request.CreateResponse(HttpStatusCode.BadRequest, "Line1 \r\n Line2");
jQuery からこのアクションを呼び出すと、応答テキストは返される前に処理されます。したがって、xhr では、次のような結果が得られます。
function success(xhr) {
alert(xhr.responseText); // alerts ""Line1 \\r\\n Line2""
}
つまり、文字列は二重引用符で囲まれ、特殊文字はエスケープされて出力に表示されます (実際のアラートは "Line1 \r\n Line2" であるため、改行は保持されず、エンコードされて表示されます応答テキスト)。
クライアントで引用符を削除して改行を次のように置き換えることで、これを回避できます。
var responseText = xhr.responseText.substr(1, xhr.responseText - 2)
.replace('\\r', '\r').replace('\\n', '\n');
しかし、WebAPI に文字列応答をフォーマットする方法を伝える方法はありますか? たとえば、それらを二重引用符で囲み、エスケープ文字を変換しないでください。