2012-06-12 28 views
5

Tôi đang cố gắng lấy dữ liệu từ máy chủ bằng cách sử dụng JSONP với phương pháp ajax của jQuery."(Phương pháp gọi lại) không được xác định" trong truy cập JSONP trên Firefox Addon

$.ajax({ 
    dataType: "jsonp", 
    url: "https://secure.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json", 
    type: "GET", 
    data: "msg=aaa", 
    cache: true, 
    jsonp: "jsoncallback", 
    // jsonpCallback: "callbackmethod", 

    success: function(encryptedMsg){ 
     console.log("Encryption success!"); 
    }, 
    error: function(req, errmsg, thrownError) { 
     console.log("Error: HTTP " + req.status + " " + errmsg); 
    } 
}); 

Tuy nhiên, lỗi sau được hiển thị trong giao diện điều khiển lỗi:

Error: jQuery1720502636097747291_1339479763752 is not defined 
Source File: https://secure.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=jQuery1720502636097747291_1339479763752&msg=aaa 
Line: 1 

Nếu bạn mở URL tập tin nguồn, bạn có thể nhìn thấy sau JSON, và có vẻ như JSON đúng.

jQuery1720502636097747291_1339479763752({ 
    "title": "Recent Uploads tagged cat", 
    // ... 
    "items": [ 
    { 
     "title": "Chaton", 
     // ... 
    }, 
    // ... 
    ] 
}) 

Tôi cũng đã cố gắng chỉ định tên phương thức với jsonpCallback: "callbackmethod", nhưng nó không hoạt động. Tôi cũng đã sử dụng phương thức $ .getJson() và jquery-jsonp (http://code.google.com/p/jquery-jsonp/) nhưng kết quả là giống nhau.

Trình duyệt là Firefox và sử dụng HTML4. Điều này được sử dụng trong một addon firefox.

Bạn có thể đọc mã đầy đủ ở đây: https://builder.addons.mozilla.org/addon/1048275/revision/749
tôi sử dụng $ .ajax trong getEncryptedMessage chức năng trong chung content.js

Cảm ơn trước.

+2

Vì vậy, bạn đã thử mà không chỉ định cuộc gọi lại jsonp? jQuery nên xử lý điều đó cho bạn. – alexn

+0

Có, tôi đã thử. Tôi đã cố gắng để truy cập flickr trong mã này và phải xác định nó, nhưng thực sự tôi muốn truy cập vào ứng dụng web của riêng tôi. Tôi đã cố truy cập mà không chỉ định "jsonp:" khi tôi sử dụng ứng dụng máy chủ của riêng mình. –

Trả lời

3

Không sử dụng JSONP trong tiện ích mở rộng của Firefox. Nếu nó hoạt động, nó sẽ là một vấn đề an ninh vì nó cho phép một số máy chủ web chạy mã trong ngữ cảnh của phần mở rộng của bạn. Trong trường hợp của bạn nó không hoạt động tuy nhiên vì content scripts don't access the web page directly. Kịch bản JSONP được chạy trong ngữ cảnh của trang web và không thể thấy các hàm được xác định bởi tập lệnh nội dung.

Bạn nên sử dụng request module để thực hiện yêu cầu đối với bất kỳ máy chủ web nào, nó hỗ trợ định dạng JSON. Bạn không thể sử dụng nó từ một kịch bản nội dung tất nhiên nhưng bạn có thể gửi một tin nhắn trở lại phần mở rộng, phần mở rộng sau đó sẽ làm cho yêu cầu và gửi phản hồi máy chủ trở lại kịch bản nội dung. Xem tài liệu trên communicating with content scripts.

+0

Ồ ... JSONP là cách sai trong các phần mở rộng của Firefox. OK, tôi sẽ thử yêu cầu. Cảm ơn! –

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