2011-01-14 57 views
5

Tôi đang gặp sự cố với, hãy đoán xem IE8 là gì. Mã sau đây, được đơn giản hóa để rõ ràng, không hoạt động chút nào:Jquery .get() không hoạt động trong Internet Explorer

alert('before get'); 

$.get(getActivityURL('ActionName',{ 
    ts: new Date().getTime(), ...other params...}), 
{cache:false;}, 
    function (xml) { 
    alert("in get callback"); 
},'xml'); // End $.get() 

alert('in after get'); 

getActivityUrl() xuất ra URL hợp lệ với thông số yêu cầu.

Công trình này hoạt động chính xác trong FF và Chrome. Tuy nhiên, trong IE8, điều này thậm chí không nhận được vào $ .get() gọi lại. Tôi nhận được thông báo "trước" và "sau", nhưng không phải là cảnh báo "trong" và thực sự, không có gì xảy ra và yêu cầu KHÔNG được gửi. Tôi thực sự không biết phải nghĩ gì ở đây.

Tiêu đề phản hồi là "Content-Type: application/xml; charset: iso-8859-1" như được xác nhận trong FF.

EDIT: $ .post() cũng không hoạt động.

+0

Bạn có thể cung cấp cuộc gọi chức năng đầy đủ, thay vì một với các bit bị mất không? Mã hiện tại của bạn sẽ không hoạt động trong bất kỳ trình duyệt nào. – lonesomeday

+0

Mã chính xác này hoạt động trong mọi trình duyệt lưu IE8. "GetActivityUrl (...)" trả về một URL hợp lệ. – Alessandro

Trả lời

0
$J.get(getActivityURL('ActionName' 

// End $.get() 

Điều này có đúng không? Ý tôi là $ J ... Bạn đang sử dụng nhiều hơn một khung công tác JS hay gì đó?

+0

Sau đó, nó sẽ có lỗi trong mọi trình duyệt. – rahul

+0

Vâng, quên đề cập đến, nó là chính xác "không mâu thuẫn" trong suốt ứng dụng. Dù sao, tôi chỉ chỉnh sửa câu hỏi. – Alessandro

0

có u thử:

$.ajax({ 
    url: getActivityURL('ActionName',{ts: new Date().getTime(), ...other params...}), 
    data: data, 
    success: function (xml) { 
       alert("in get callback"); 
      }, 
    dataType: 'xml' 
}); 

Chỉ cần một đoán

EDIT:

Tôi tìm thấy một chủ đề thú vị mà có thể giúp bạn, check this out:

jQuery issue in Internet Explorer 8

+0

Giống như trước đây, không có thay đổi (tôi cũng bao gồm loại: 'GET'). Tuy nhiên nó hoạt động trong mọi trình duyệt khác, nhưng không phải trong việc thực hiện IE – Alessandro

+0

nó hoạt động trong ie6 và 7? hoặc không trong tất cả IE? –

+0

hey dude, tôi chỉnh sửa bài đăng, kiểm tra liên kết mà tôi đã thêm! –

1

Tôi không chắc đó có phải là vấn đề hay không để xóa ";" trong {cache: false}

IE không thích bất kỳ công cụ bổ sung trong {}, ví dụ: {a: a, b: b, c: c} sẽ làm việc trong FF nhưng không phải trong IE

+0

Cảm ơn, cũng đã thử điều đó, nhưng không có may mắn. – Alessandro

1

Tôi nghĩ rằng có vấn đề Cache trong IE.

Vì vậy, hãy thêm Math.random(), một thông số khác ở cuối như "&mathRandom="+Math.random(); Vì IE sẽ nhận ra yêu cầu giống như yêu cầu trước đó nên dữ liệu từ bộ nhớ cache thay vì yêu cầu kích hoạt.

+0

Điều này làm việc cho tôi trong IE9. –

13

IE nổi tiếng về bộ nhớ đệm. Vì vậy, bạn cần đảm bảo rằng bạn không nhận được kết quả được lưu trong bộ nhớ cache.

Bạn có thể tắt bộ nhớ đệm trên toàn cầu bằng cách đặt giá trị thuộc tính bộ nhớ cache thành sai trong phương thức ajaxStart.

$.ajaxSetup({ 
    cache: false 
}); 

Hoặc Nếu bạn muốn loại bỏ kết quả đã lưu trong một cuộc gọi ajax cụ thể, hãy thêm số duy nhất vào cuối url. Bạn có thể sử dụng phương pháp $.now() để có được một số duy nhất

$.get("someurl.php?" + $.now() ,function(result) { 
    // do something with result 
}); 

$.now() phương pháp trả về một số đại diện cho thời điểm hiện tại.

+3

Điều này đã cứu mạng tôi, cảm ơn! –

+2

Đó là !!! cảm ơn!! –

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