2012-09-05 36 views
5

Mã của tôi trông như thế này:AJAX - JQuery GET Callback không làm việc nhưng JSON tập tin truy cập ok

$.get('http://files.mysite.com/data.json', function(data) { 
    console.log(data); 
}, "jsonp"); 

Khi tôi có một cái nhìn bên trong Network trình đơn từ Firebug tôi có thể thấy một cuộc gọi hợp lệ để tập JSON tôi và khi tôi mở nó, nó chứa tất cả thông tin.

Nhưng Console vẫn giữ im lặng. Không có dấu hiệu nào của cuộc gọi AJAX cũng như nhật ký của tôi về số data.

Số điện thoại AJAX của tôi không có cùng tên miền với tệp JSON của tôi. Đó là lý do tại sao tôi đang sử dụng jsonp

Bất kỳ ý tưởng nào ??

Trả lời

13

Tôi không hoàn toàn chắc chắn vấn đề của bạn là gì, nếu bạn nhận được kết quả nhưng bảng điều khiển vẫn yên lặng, bạn có thể gặp sự cố với chính JSON ... hãy thử JSONLint để tìm sự cố .

Ngoài ra tôi sẽ khuyên bạn không sử dụng getJSON, vv

$.ajax({ 
    url: http://files.mysite.com/data.json, 
    dataType: 'jsonp', 
    cache: false, 

    beforeSend: function() { 
     console.log("Loading"); 
    }, 

    error: function (jqXHR, textStatus, errorThrown) { 
     console.log(jqXHR); 
     console.log(textStatus); 
     console.log(errorThrown); 
    }, 

    success: function (data) { 
     console.log('Success'); 
     console.log(data); 
    }, 

    complete: function() { 
     console.log('Finished all tasks'); 
    } 
}); 

Bằng cách này bạn sẽ có được một số xử lý lỗi và các tính năng ít tốt đẹp khác, bạn có thể thêm một spinner tải qua beforeSend, và loại bỏ nó thông qua hoàn thành :)

Edit: Thay thế hàm lỗi với hình dưới đây, bạn cần cung cấp cho chúng ta một ý tưởng tốt hơn về những gì vấn đề là :)

error: function (jqXHR, textStatus, errorThrown) { 
    console.log(jqXHR); 
    console.log(textStatus); 
    console.log(errorThrown); 
} 
+0

bảng điều khiển của tôi cho tôi biết những điều sau đây: Đang tải Lỗi Đối tượng {readyState = 4, status = 200, statusText = "success "} Hoàn tất mọi tác vụ - Trình đơn Mạng vẫn tải tệp, nội dung và diễn giải JSON ... – Ron

+0

và jsonlint cho tôi biết rằng JSON của tôi là hợp lệ – Ron

+0

Vì vậy, nó chạy chức năng lỗi tốt, không phải chức năng thành công? –

0

Tốt hơn nên sử dụng $ .getJSON thay vì nhận được nếu bạn biết rằng phản hồi sẽ là json. Giao diện điều khiển sẽ làm việc tại

$.getJSON('http://files.mysite.com/data.json', function(data) { 
console.log(data); 
}); 
+1

Trường hợp sens itive! It's '$ .getJSON() ' – devnull69

0

jsonp không được hỗ trợ thấy here, chỉ xml, json, kịch bản, html nên sử dụng json thay vì nếu bạn không có vấn đề chính sách miền chéo

$.get('http://files.mysite.com/data.json', function(data) { 
    console.log(data); 
}, "json"); 
+0

tiếc là tôi không có quyền truy cập tên miền chéo ... – Ron

+0

@Ron trong trường hợp đó, sử dụng $ .ajax với loại:" get ", jsonp được hỗ trợ trong phương thức ajax :) cũng, bài đăng này sẽ giúp http://devlog.info/2010/03/10/cross-domain-ajax/ –

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