In WebAPI, dire torno una corda avvolta in una risposta HTTP:ASP.NET WebAPI: come controllare il contenuto di stringhe restituito al client?
return Request.CreateResponse(HttpStatusCode.BadRequest, "Line1 \r\n Line2");
Quando si richiama questa azione da jQuery, il testo di risposta viene trattato prima di essere restituito. Così nel XHR, ho qualcosa di simile:
function success(xhr) {
alert(xhr.responseText); // alerts ""Line1 \\r\\n Line2""
}
In altre parole, la stringa viene avvolto tra virgolette, e caratteri speciali ottengo sfuggito in modo che appaiano nell'output (avviso effettiva è "Riga1 \ r \ n Line2 ", quindi le newline non sono conservate, ma piuttosto codificate e mostrate nel testo di risposta).
posso ottenere intorno a questo rimuovendo le virgolette e rimpiazzando le nuove righe sul client in questo modo:
var responseText = xhr.responseText.substr(1, xhr.responseText - 2)
.replace('\\r', '\r').replace('\\n', '\n');
Ma c'è un modo per dire WebAPI come formattare le risposte delle stringhe? Ad esempio, non per racchiuderli tra virgolette e convertire caratteri di escape?
Grazie, questo è esattamente quello che stavo cercando. Un'ultima domanda, che è meglio: per aggiungere il formattatore del tipo di supporto alla configurazione e usare "text/plain" come terzo argomento di CreateResponse o utilizzare il nuovo PlaintTextFormatter() come terzo argomento? – danludwig
Preferirei la prima opzione poiché l'API Web individuerà quindi il formattatore appropriato dalla configurazione. Se cambi mai il formattatore devi solo farlo in un posto. –
Perché ajax di jQuery interpreta la risposta come errore? –