Tôi phải làm điều gì đó rất đơn giản, nhưng dường như không có cách nào dễ dàng để làm điều này, theo như tôi có thể nói. Tôi chỉ muốn tải dữ liệu JSON từ một nguồn từ xa và lưu nó trong một biến Javascript toàn cầu bằng cách sử dụng jQuery. Dưới đây là những gì tôi có:tải json vào biến
var my_json;
$.getJSON(my_url, function(json) {
var my_json = json;
});
Biến my_json vẫn chưa được xác định. Tôi nghĩ rằng đây rõ ràng là một vấn đề phạm vi. Dường như với tôi phương thức $ .getJSON sẽ trả về JSON, nhưng nó trả về một đối tượng XMLHttpRequest. Nếu tôi làm điều này:
request = $.getJSON(my_url);
my_json = request.responseText.evalJSON();
Điều đó không hiệu quả vì cho đến khi nguyên tắc == 4, câu trả lời vẫn giữ nguyên. Có vẻ như bạn phải sử dụng hàm gọi lại để trả về responsetext, vì nó phát sinh thành công.
Không khó như thế này! Đúng?
chỉ để làm rõ cho lợi ích của tôi: $ .getJSON không bao giờ là một lựa chọn tốt cho các yêu cầu phong cách đồng bộ, ngay cả khi tôi trả lại dữ liệu cho biến của tôi trong khi gọi lại thành công? – user1026169
+1 cho thông tin liên quan nhưng tại sao bạn tạo biến json null ở đầu hàm. – Manoj
@Manoj Có 2 lý do [1] khối này có thể nằm trong một phương thức và được gọi nhiều lần. Vì vậy, điều này sẽ làm mới biến json. Nhưng nếu yêu cầu ajax sẽ cập nhật điều này dù sao điểm là gì? Vâng thats bởi vì ... [2] đây là một quy ước mã hóa trong trường hợp yêu cầu ajax thất bại, sau đó người dùng có thể kiểm tra xem json là null. Nếu có, thì có thể giả định yêu cầu ajax không thành công –