Trong WebAPI, nói rằng tôi trả về một chuỗi được bọc trong một phản ứng HTTP:ASP.NET WebAPI: Cách kiểm soát nội dung chuỗi được trả lại cho khách hàng?
return Request.CreateResponse(HttpStatusCode.BadRequest, "Line1 \r\n Line2");
Khi gọi hành động này từ jQuery, văn bản trả lời được xử lý trước khi nó được trả về. Vì vậy, trong XHR, tôi nhận được một cái gì đó như thế này:
function success(xhr) {
alert(xhr.responseText); // alerts ""Line1 \\r\\n Line2""
}
Nói cách khác, các chuỗi được bọc trong dấu ngoặc kép, và ký tự đặc biệt được thoát để họ xuất hiện trong đầu ra (cảnh báo thực tế là "Line1 \ r \ n Dòng 2 ", vì vậy các dòng mới không được bảo toàn, mà được mã hoá và hiển thị trong văn bản phản hồi).
tôi có thể làm được việc này bằng cách loại bỏ các dấu ngoặc kép và thay thế các dòng mới trên máy khách như vậy:
var responseText = xhr.responseText.substr(1, xhr.responseText - 2)
.replace('\\r', '\r').replace('\\n', '\n');
Nhưng có một cách để nói WebAPI cách định dạng phản ứng chuỗi? Ví dụ, không để bọc chúng trong dấu ngoặc kép và chuyển đổi ký tự thoát?
Cảm ơn bạn đây chính xác là những gì tôi đang tìm kiếm. Một câu hỏi cuối cùng, tốt hơn: Để thêm định dạng kiểu phương tiện vào cấu hình và sử dụng "text/plain" làm đối số thứ 3 cho CreateResponse, hoặc sử dụng PlaintTextFormatter() làm đối số thứ 3? – danludwig
Tôi sẽ ưu tiên tùy chọn đầu tiên vì Web API sau đó sẽ định vị trình định dạng phù hợp từ cấu hình. Nếu bạn thay đổi trình định dạng, bạn chỉ cần thực hiện ở một nơi. –
Tại sao ajax của jQuery giải thích phản hồi là lỗi? –