2011-12-09 51 views
7

Ok, vì một số lý do khiến getJson của tôi không hoạt động. Tôi đang kéo một số thông tin cổ phiếu và nó hoạt động trong tất cả các trình duyệt chính ngoại trừ IE.

tôi đã tạo ra một JSfiddle đây: http://jsfiddle.net/qZhSk/

Nếu bất cứ ai có thể giúp tôi hiểu những gì tôi đang làm sai nó sẽ được SUPER hữu ích.

cảm ơn!

EDIT

Tôi tìm thấy giải pháp bản thân mình. Vấn đề nằm trong truy vấn URL của tôi. Nếu bất kỳ ai khác có vấn đề này ở đây là câu trả lời:

var url = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20WHERE%20symbol%3D'NPO'&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys"; 

     $.getJSON(url + "&format=json&callback=?", function(data) { 
     var items = []; 

     $.each(data.query.results.quote, function(key, val) { 

      items.push('<li id="' + key + '">' + val + '</li>'); 
     }); 

     $('<ul/>', { 
      'class': 'my-new-list', 
      html: items.join('') 
     }).appendTo('body'); 
)}; 

Trả lời

8

Về mặt kỹ thuật, tôi cho rằng bạn đang vi phạm Chính sách gốc tương tự trên trang này. Theo định nghĩa, bạn không thể làm một JSON nhận được từ một tên miền khác với của riêng bạn .... và nhận được dữ liệu từ Yahoo chắc chắn là một máy chủ khác với jsFiddle. Có một similar issue reported here. Các ngoại lệ CORS mà họ liệt kê là IE lên đến phiên bản 10, điều này sẽ giải thích vấn đề một cách hoàn hảo.

Sự cố có thể được giải quyết bằng cách sử dụng dấu "?" trong trình xử lý gọi lại của bạn. See this stack article để biết thêm thông tin.

+1

Đó chính xác là những gì tôi nhận thấy. Về cơ bản bạn sẽ cần phải thêm một '& callback =?' Vào cuối chuỗi url của bạn và bạn đang vàng –

+0

Điều kỳ lạ là nó hoạt động trong Firefox. * chỉnh sửa * ah - CORS – Pointy

1

Vì một bài đăng cũ nên câu trả lời này có thể hữu ích cho những người tìm kiếm khác.

Có thể có hai lý do khiến getJson không hoạt động trong IE.

yêu cầu 1.Either JSONP mà giải quyết bằng cách thêm

&callback=? or &callback=? 

2.Set ajax bắt.

$.ajaxSetup({ cache: false }); 

Nếu bạn vẫn gặp sự cố, có thể do sử dụng API đa nền tảng.

+0

Cảm ơn. Trong trường hợp của tôi, bộ nhớ cache là vấn đề. –

Các vấn đề liên quan