は、私がHTTPレスポンスに包まれた文字列を返すと言います。だから、XHRで、私はこのような何かを得る:つまりASP.NET WebAPI:クライアントに返される文字列コンテンツを制御する方法は?</p> <pre><code>return Request.CreateResponse(HttpStatusCode.BadRequest, "Line1 rn Line2"); </code></pre> <p>jQueryのから、このアクションを起動、応答テキストは、それが返される前に処理されます。WebAPIの中
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の第3引数として "text/plain"を使用するか、新しいPlaintTextFormatter()を第3引数として使用するか? – danludwig
Web APIは構成から適切なフォーマッタを探し出すので、私は最初のオプションを優先します。フォーマッタを変更したことがある場合は、一箇所で行うだけです。 –
なぜjQueryのajaxはレスポンスをエラーと解釈しますか? –