2009-04-12 34 views
5

Tôi có một đoạn mã như vấn đề này

var searchurl="http://mysite.com/searchpath?q=test"; 
$.ajax({ 
    type: "GET", 
    url: searchurl, 
    cache: false, 
    dataType : "jsonp", 
    async : false, 
    success: function(data){ 
     alert("success"); 
    } 
}); 
alert("outside ajax"); 

ở đây là tôi không nhìn thấy async tại nơi làm việc. "bên ngoài ajax" là popup đầu tiên tôi nhận được và "thành công" thứ hai. có điều gì đó hiển nhiên mà tôi đang bỏ lỡ không?

Thêm từ ý kiến ​​của tôi để trả lời Anothny của

env thử nghiệm của tôi là giành chiến thắng xp sp2, FF 3.0.8/w Firebug + IE 8. và JQuery v1.3.2. Không có gì rõ ràng tôi có thể tìm thấy từ con đom đóm.

Bạn có sẵn lòng thử mã trên với url này "http://pipes.yahoo.com/pipes/pipe.run?_id=1nWYbWm82xGjQylL00qv4w&_render=json&textinput1=obama&_callback=?"

+0

Thử không có "jsonp?" Có thể là jsonp không tương thích với async –

+0

Jason, điều đó không giúp được gì. –

+0

JSONP không sử dụng kỹ thuật AJAX, nó sử dụng thẻ 'script' mà nó nhúng vào phần đầu của tài liệu. Nó có thể không phải là vấn đề duy nhất bạn gặp phải, nhưng nó chắc chắn là một vấn đề ... – mishac

Trả lời

6

Vâng, bạn không thể có yêu cầu jsonp đồng bộ. Cách jsonp được thực hiện là thông qua một thẻ script hack để cho phép truy cập tên miền chéo. Vì vậy, $ .ajax chỉ đơn giản là bỏ qua thuộc tính async vì nó không thể thực hiện một yêu cầu jsonp đồng bộ.

Lưu ý phụ, bạn nên thử & tránh yêu cầu ajax đồng bộ. Mặc dù chúng có vẻ đơn giản hơn trong thiết kế lúc đầu, chúng sẽ đóng băng các trình duyệt trong trường hợp lưu giữ mạng và tạo ra trải nghiệm người dùng rất khó chịu.

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