Có vẻ như mọi người đã gặp sự cố với Chấp nhận tiêu đề trong quá khứ, nhưng tôi không chắc chắn vấn đề của tôi có liên quan hay không. Sử dụng jQuery 1.4.2, tôi gặp sự cố khi nhận JSON với getJSON()
. Tôi có thể xem yêu cầu/phản hồi trong Firebug và có vẻ như nguồn của sự cố là tài nguyên được đề cập trả về các kết quả khác nhau tùy thuộc vào tiêu đề Chấp nhận. Mặc dù các tài liệu nói rằng nó nên được thiết lập, trong Firebug nó xuất hiện là "/" - rõ ràng, tôi muốn "ứng dụng/json". Đây có phải là một lỗi được biết đến? Tôi có nên thiết lập một số lá cờ tôi không biết?getJSON() của JQuery không thiết lập chấp nhận tiêu đề chính xác?
ETA: Yêu cầu là cross-site, nếu có vấn đề, nhưng tôi đang chuyển một tham số truy vấn callback=?
để JQuery (thành công!) Coi nó là JSONP. Dịch vụ tôi gọi trong trường hợp cụ thể này hỗ trợ tham số truy vấn ghi đè chấp nhận (&accept=application/json
), vì vậy tôi đã làm cho nó hoạt động theo cách thủ công, nhưng tôi vẫn xem xét tiêu đề trục trặc là lạ và hy vọng tôi có thể sửa lỗi, vì vậy tôi không gặp phải vấn đề này một lần nữa khi giao dịch với một dịch vụ khác có thể không được tha thứ như vậy. Tôi không có một cách dễ dàng sao chép/dán mã từ môi trường phát triển của tôi, nhưng đây là ý chính:
$.getJSON(baseURL + "?item=" + itemNum + "&callback=?", function(data){
console.log(data);
}
Như bạn có thể thấy, đây là không chính xác phức tạp, và nên (tôi 99 % chắc chắn ...) dẫn đến XHR được gửi với tiêu đề Chấp nhận là application/json
. Như tôi đã nói, điều đó không xảy ra, trên mỗi giao diện điều khiển Net của Firebug. Nếu nó quan trọng, đây là trong Firefox 3.6.8.
ETA Một lần nữa: Đối với bất cứ ai vẫn đọc điều này, có, nó vẫn đang xảy ra, và không, tôi không biết tại sao. Như tôi đã nói, lệnh getJSON() đơn giản, cú pháp thực sự cơ bản, trang web chéo, được coi là JSONP bởi vì nó bao gồm tham số truy vấn gọi lại. Vẫn mở để gợi ý!
Hiển thị mã cho chúng tôi và chúng tôi có thể giúp bạn nhiều hơn. – Steven
Tôi gặp vấn đề tương tự trong Chrome 8. $ .getJSON ("url", hàm (dữ liệu) {}) đang đặt tiêu đề Chấp nhận thành */* –