2009-01-12 27 views
11

Tôi đang làm việc trên phiên bản ngoại tuyến của trang web bằng cách sử dụng jQuery và một số tệp xml. Tôi đang chạy vào một vấn đề trong jQuery khi tôi làm một cuộc gọi $ .ajax trên một tập tin xml jQuery ném một lỗi.Tệp html cục bộ AJAX Cuộc gọi và jQuery Woes

Khi tôi xem lỗi, tôi có thể yêu cầu tải tệp XML vì tệp đó trong thuộc tính responceText của lỗi. Nó seams để làm việc tốt trong Firefox.

Đây là cách gọi của tôi trông

$.ajax({ 
    type: "GET", 
    url: "Modules/" + ModuleID + "/ModuleContent.xml", 
    dataType: "xml", 
    success: function(x) { xml = x; ProcessXML(); }, 
    error: function(x) { alert(x.responceText); } 
}); 

Khi tôi chạy trên một máy chủ web nó hoạt động tốt. Nó chỉ khi tôi chạy nó từ các tập tin tự của nó khi tôi có vấn đề này.

Bất kỳ ý tưởng nào về cách tôi có thể thực hiện công việc này trong IE?

Chỉnh sửa: Tôi đã tìm thấy câu trả lời cho vấn đề của mình. Here

+1

Rất vui khi bạn tìm thấy câu trả lời của mình. Bạn thực sự có thể gửi một câu trả lời ở đây và chấp nhận nó vì lợi ích của sự rõ ràng, nếu bạn cảm thấy như viết nó lên. –

+0

Tôi ghét vấn đề này: https://bugs.jquery.com/ticket/14475 – bgmCoder

Trả lời

8

Từ link rằng OP posted với câu trả lời:

Khi tải file XML tại địa phương, ví dụ a CD-ROM, v.v., dữ liệu nhận được bởi Internet Explorer là văn bản thuần túy, không phải là văn bản/xml. Trong trường hợp này, sử dụng tham số datatype để tải tập tin xml dưới dạng văn bản, và phân tích các trở dữ liệu trong phạm vi chức năng succes

$.ajax({ 
    url: "data.xml", 
    dataType: ($.browser.msie) ? "text" : "xml", 
    success: function(data){ 
    var xml; 
    if (typeof data == "string") { 
     xml = new ActiveXObject("Microsoft.XMLDOM"); 
     xml.async = false; 
     xml.loadXML(data); 
    } else { 
     xml = data; 
    } 
    // Returned data available in object "xml" 
    } 
}); 

này làm việc cho tôi là tốt.

1

Chỉ cần suy nghĩ: Tôi nhớ một số yêu cầu GET thất bại với IE. Bạn đã thử POST nó chưa?

+0

Không có vấn đề tương tự. – Superdumbell