2010-09-23 11 views
8

Tôi đang cố gắng để có được một JSON mà đang được gửi đi từ một trang web an toàn https,JSONP Để Có được JSON Từ HTTPS Nghị định thư với JQuery

Các khách hàng đã hy vọng không sử dụng bất kỳ ngôn ngữ phía máy chủ (toàn bộ điều trong Javascript)

Tôi đã đọc rằng tôi phải sử dụng JSONP để tải JSON từ một trang web bảo mật, khi sử dụng hàm .ajax từ Jquery.

Câu hỏi đầu tiên của tôi là định dạng nào tôi cần để đặt JSONP này thành? Ngay bây giờ mã của tôi trông giống như sau:

html =new Object(); 
    html = $.ajax({ 
     url: "https://my-secure.net", 
     async: false, 
     dataType: 'jsonp' 
    }).responseText; 

//alert(html);  
    alert("myObject is " + html.toSource()); 
    console.log(html); 

Tuy nhiên, không có gì được cảnh báo và cũng không có nội dung nào được ghi trong Firebug. Về cơ bản tôi muốn có thể thao tác dữ liệu JSON. Tôi thấy dữ liệu trong Phản hồi trong Firebug, nhưng có lỗi nói "nhãn không hợp lệ". Tôi đã đọc rằng để sửa lỗi này, bạn sẽ mã hóa nó trong hàm eval với các giá trị bổ sung nhưng nó không hoạt động.

http://b.lesseverything.com/2007/10/25/invalid-label-error-when-eval-json

Tôi cũng nhận được một lỗi mà nói yêu cầu $ .ajax của tôi là "không xác định" nhưng tôi có thể xem dữ liệu trong các phản ứng. Tôi nghi ngờ điều này có liên quan đến cách tôi lấy dữ liệu ban đầu. Lời khuyên nào sẽ được đánh giá cao. Cảm ơn bạn!

Trả lời

5

bạn có thể sử dụng getJSON ví dụ

$.getJSON('ajax/test.json', function(data) { 
    $('.result').html('<p>' + data.foo + '</p>' 
    + '<p>' + data.baz[1] + '</p>'); 
}); 

kiểm tra tài liệu đầy đủ getJSON http://api.jquery.com/jQuery.getJSON/

EDIT

tôi đã sai ... sử dụng Jquery.ajax sẽ gây ra vấn đề qua trình duyệt nhưng không phải với Jquery.getJSON

http://docs.jquery.com/Release:jQuery_1.2/Ajax#Cross-Domain_getJSON_.28using_JSONP.29

Dưới đây là một ví dụ về cross-domain được JSON

EDIT

Firefox có một vấn đề với HTTPS, như tôi biết nó sẽ được cố định nếu bạn gửi yêu cầu của bạn như thế này

$.getJSON('ajax/test.json',{}, function(data) { 
    $('.result').html('<p>' + data.foo + '</p>' 
    + '<p>' + data.baz[1] + '</p>'); 
}); 

Nguồn: AJAX https POST requests using jquery fail in Firefox

Hope this helps

+0

Tính năng này có hoạt động trên giao thức HTTPS không? –

+0

có, nhưng tập lệnh của bạn và URL được yêu cầu phải nằm trong cùng một tên miền – trrrrrrm

+0

Và nếu không phải là không có cách nào để thực hiện việc này? Giao diện điều khiển và api của tôi nằm trong hai miền riêng biệt, –

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