Các trạng thái $.getJSON()
tài liệu:Tại sao jQuery không tự động gắn thêm gọi lại JSONP?
If the specified URL is on a remote server, the request is treated as JSONP instead. See the discussion of the
jsonp
data type in $.ajax() for more details.
Các tài liệu $.ajax()
cho các tiểu bang loại jsonp
dữ liệu (tôi nhấn mạnh):
Loads in a JSON block using JSONP. Will add an extra "?callback=?" to the end of your URL to specify the callback.
Vì vậy, có vẻ như nếu tôi gọi $.getJSON()
với một URL cross-domain, "callback =" bổ sung thông số sẽ tự động được thêm vào. (Các phần khác của tài liệu hỗ trợ giải thích này.)
Tuy nhiên, tôi không thấy hành vi đó. Nếu tôi không thêm "callback =?" một cách rõ ràng, jQuery không chính xác tạo một XMLHttpRequest (trả về dữ liệu null vì tôi không thể đọc được miền phản hồi). Nếu tôi thêm nó một cách rõ ràng, jQuery sẽ thực hiện một yêu cầu kịch bản >.
Dưới đây là một ví dụ:
var URL = "http://www.geonames.org/postalCodeLookupJSON" +
"?postalcode=10504&country=US";
function alertResponse(data, status) {
alert("data: " + data + ", status: " + status);
}
$.getJSON(URL, alertResponse);
// alerts "data: null, status: success"
$.getJSON(URL + "&callback=?", alertResponse);
// alerts "data: [object Object], status: undefined"
Vì vậy, những gì đang xảy ra? Tôi có hiểu nhầm tài liệu hoặc quên điều gì đó không? Không cần phải nói rằng đây không phải là một vấn đề lớn, nhưng tôi đang tạo một API web và tôi cố tình đặt tham số gọi lại thành "gọi lại" với hy vọng điều chỉnh nó một cách độc đáo để sử dụng jQuery.
Cảm ơn!
(Edit:. Tôi cross-posted this trong các diễn đàn jQuery nếu bạn quan tâm)
Trong ví dụ của bạn, bạn thực sự có nghĩa là 'jsonpCallback: 'alertResponse'', và có, điều đó hoạt động sau đó mà không cần tôi phải thêm rõ ràng" callback =? " tham số. Nhưng đó là quá nhiều chi tiết hơn so với sự tao nhã của '$ .getJSON()'. Sẽ tốt hơn nếu '$ .getJSON()' làm việc với tư liệu ... –