2012-08-29 17 views
6

vấn đề của tôi là:getJSON sử dụng một IP không được làm việc

Khi tôi gọi json sử dụng đoạn mã sau

var url="http://localhost:9000/json"; 
$.getJSON(url, 
function(data){ 
    alert(data['yay']); 
    }); 

Nó hoạt động hoàn hảo, nhưng, IP localhost của tôi là 10.0.0.145, và khi tôi thay thế localhost bằng địa chỉ IP, nó không còn hoạt động

var url="http://10.0.0.145:9000/json"; 
$.getJSON(url, 
function(data){ 
    alert(data['yay']); 
    }); 

Trả lời

6

Bạn đang vi phạm same origin policy. Nếu bạn kiểm soát trang đích, bạn nên cân nhắc sử dụng kiểu gọi JSONP hoặc bật tùy chọn cross domain (crossDomain) trên trang web của bạn và trong cuộc gọi AJAX của bạn.

Trình duyệt của bạn sẽ không thực hiện cuộc gọi, theo mặc định, nếu bạn đang vi phạm cùng một nguồn gốc. Bạn sẽ biết rằng bằng cách xem lưu lượng truy cập HTTP của mình bằng cách sử dụng Fiddler, FireBug hoặc Chrome Tools. Bạn sẽ không thấy yêu cầu của bạn thậm chí được thực thi. Nếu đúng như vậy, thì hãy thực hiện một trong các cách tiếp cận ở trên.

Tôi hy vọng điều này sẽ hữu ích. Chúc may mắn!

3

lý do chỉ đơn giản là bảo vệ tên miền chéo: truy vấn ajax của json từ miền khác (dường như) chỉ có thể được thực hiện nếu tiêu đề cụ thể được đưa ra bởi t ông chủ.

Tôi đề nghị bạn đọc this complete reference vì điều này bây giờ là một điều cần biết để viết các ứng dụng dựa trên ajax.

Sử dụng cùng tên cho cả hai.