In WebAPI, sagen ich eine Zeichenfolge in einer HTTP-Antwort eingewickelt zurück:ASP.NET-WebAPI: Wie kann der an den Client zurückgegebene String-Inhalt gesteuert werden?
return Request.CreateResponse(HttpStatusCode.BadRequest, "Line1 \r\n Line2");
Wenn diese Aktion von jQuery Aufruf der Antworttext behandelt wird, bevor es zurückgeführt wird. So in der xhr, ich so etwas wie diese:
function success(xhr) {
alert(xhr.responseText); // alerts ""Line1 \\r\\n Line2""
}
Mit anderen Worten, wird die Zeichenfolge in doppelten Anführungszeichen eingewickelt und Sonderzeichen entkommen lassen, so dass sie in der Ausgabe (Ist-Alarm angezeigt ist „Line1 \ r \ n Zeile2 ", so werden die Zeilenumbrüche nicht beibehalten, sondern codiert und im Antworttext angezeigt.
Ich kann dieses Problem umgehen, indem Sie die Anführungszeichen zu entfernen und die Zeilenumbrüche auf dem Client wie so ersetzen:
var responseText = xhr.responseText.substr(1, xhr.responseText - 2)
.replace('\\r', '\r').replace('\\n', '\n');
Aber ist es eine Möglichkeit, WebAPI zu sagen, wie String Antworten zu formatieren? Zum Beispiel, um sie nicht in doppelte Anführungszeichen zu setzen und escaped Zeichen zu konvertieren?
Vielen Dank das ist genau das, was ich gesucht habe. Eine abschließende Frage, die besser ist: Den Medientyp-Formatierer zur Konfiguration hinzufügen und "text/plain" als drittes Argument für CreateResponse verwenden oder neues PlaintTextFormatter() als drittes Argument verwenden? – danludwig
Ich würde die erste Option bevorzugen, da Web API dann den entsprechenden Formatierer aus der Konfiguration findet. Wenn Sie den Formatierer ändern, müssen Sie dies nur an einer Stelle tun. –
Warum interpretiert jQuerys Ajax die Antwort als Fehler? –