В 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 как форматировать ответы на строки? Например, чтобы не обернуть их в двойные кавычки и преобразовать экранированные символы?