2010-10-08 50 views
6

Tôi vừa kết luận rằng các cuộc gọi ajax của jQuery sẽ không hoạt động với dữ liệu JSON trong IE 8, bất kể tôi đã thử làm gì. Tôi thấy rằng tôi có thể sử dụng thư viện jQuery 1.3.2 và điều này đã khắc phục được vấn đề, nhưng 1.4 đơn giản sẽ không chơi bóng với các yêu cầu JSON ajax. Ngay cả khi dữ liệu JSON được trả về quá đơn giản đến nỗi không có câu hỏi nào về nó ở định dạng không hợp lệ. Ví dụ:Lỗi với sự kết hợp của: jQuery 1.4, ajax/json, Firebug Lite và IE 8

{"x":"a"} 

Điều này bất kể tôi đã sử dụng Java servlet để trả về dữ liệu JSON hay tệp văn bản đóng hộp đơn giản. Bất kể dataType hoặc contentType. Bất kể GET và POST. Bất kể tôi đã sử dụng $ .ajax hay $ .getJSON. Và tất cả đều hoạt động trong Firefox 3.6.

Sau đó, tôi đã nhận ra rằng tôi đã tham khảo Firebug Lite và CNTT ĐÃ LÀM VIỆC! Đột nhiên vấn đề biến mất. Nó hoạt động bất kể việc mày mò với contentType trong phản hồi (trong servlet), hoặc của kiểu dữ liệu mà tôi chỉ định trong yêu cầu.

Sự cố trả về nếu tôi liên kết lại với Firebug Lite ... ngay cả khi mã của tôi không bao giờ thực sự sử dụng nó.

Có ai đã xem loại hành vi này và có ai đang sửa chữa hoặc giải quyết sự cố không? Tôi ghét phải ngừng sử dụng Firebug Lite. Cảm ơn vì bất kỳ thông tin chi tiết nào. Một lần nữa, vấn đề chỉ xảy ra khi bạn kết hợp jQuery 1.4, Firebug Lite, dữ liệu JSON, và IE 8.

Đây là cuộc gọi ajax đến một servlet, nếu nó quan trọng:

$.ajax({ 
cache: false, 
url:"http://localhost:8080/Performance_Reporting/TestServlet", 
type:"GET", 
contentType: "application/json", 
dataType: "json", 
timeout:30000, 
success: function(d, status, req) 
{ 
    $("#result").text(d.x); 
}, 
error: function(req, status, err) 
{ 
    $("#result").text(req.responseText); 
} 
}) 
+0

Lời xin lỗi từ tân binh vì thiếu các dấu ngắt dòng trong mã ví dụ. Rõ ràng tôi cần đọc một số câu hỏi thường gặp. – dnuttle

+0

Tệp được lưu trữ ở đâu? Khi bạn chạy Firebug lite, bạn có thể thấy các vấn đề tên miền chéo và phản hồi trống. –

+1

Gaaaah Tôi đã chiến đấu với các vấn đề IE7/jQuery/JSON cả ngày và hóa ra là Firebug Lite gây ra vấn đề. 1 vì đã thu hút sự chú ý của tôi. Bây giờ tôi sẽ đấm một cái gì đó rất, rất khó ... –

Trả lời

1

Tôi đã thực sự cũng thấy cùng một vấn đề với các câu trả lời HTML đơn giản.

0

Hiện tại, tôi không thể truy cập webservice để nhập đúng contentType, nhưng tôi đã có thể sử dụng $ .ajax() trong phiên bản mới nhất của jQuery bằng cách sửa đổi mã javascript của tôi như sau ...

$.ajax({ 
cache: false, 
url:"http://localhost:8080/Performance_Reporting/TestServlet", 
type:"GET", 
contentType: "application/json", 
dataType: "text", 
timeout:30000, 
success: function(d, status, req) 
{ 
    $("#result").text($.parseJSON(d).x); 
}, 
error: function(req, status, err) 
{ 
    $("#result").text(req.responseText); 
} 
}) 

sự khác biệt là làm cho các dịch vụ mong đợi TEXT không JSON, và sau đó phân tích cú pháp JSON ....

d = $.parseJSON(d); 

Bodge, nhưng cố định.

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