2010-07-26 39 views
14

Tôi nhận được lỗi javascript trên firefox 3.5, khi cố gắng gọi phương thức ajax.Cuộc gọi jQuery Ajax Không tìm thấy thành phần nào

Hãy tìm ra lỗi dưới đây:

XML Parsing Error: no element found Location: moz-nullprincipal:{1a2c8133-f48f-4707-90f3-1a2b2f2d62e2} Line Number 1, Column 1: 

^ 

đây là chức năng javascript của tôi:

function Update(Id) { 
    $.ajax({ 
     type: "GET", 
     url: ROOT_URL + "/sevice/udates.svc/Update?Id=" + Id, 
     success: function(response) { 

     }, 
     async: false 
    }); 
} 
+0

Bạn có biết dịch vụ của mình đang được gọi không? Có thể đó là vấn đề với giá trị được trả lại. Vui lòng cho chúng tôi biết bạn đang gặp lỗi ở đâu - trong trình xử lý thành công, trong cuộc gọi ajax, v.v. –

+2

Bạn đã xem trong hình dán lửa? Có vẻ như bạn đang nhận được phản hồi hoàn toàn trống từ máy chủ. –

+1

Tôi nghĩ câu hỏi của bạn sẽ cần thêm chi tiết cụ thể, có vẻ như có sự cố trong phản hồi của bạn từ cuộc gọi dịch vụ của bạn. Đầu tiên trả về chính xác cùng một tài liệu XML mỗi lần (không phụ thuộc vào "id") và xem liệu nó có hoạt động hay không, hãy thử và thu hẹp vấn đề một chút, sau đó sửa bài viết của bạn. – walnutmon

Trả lời

14

Cuộc gọi ajax hy vọng XML trở lại (có lẽ do xấu đoán) và cố gắng phân tích nó và không thành công nếu không có gì được trả lại hoặc nó không hợp lệ XML ..

Sử dụng tùy chọn dataType để chỉ định định dạng o f phản hồi.


Từ nhận xét có vẻ như một số trình duyệt không thể xử lý phản hồi không có nội dung. Vì vậy, giải pháp cho các trường hợp như vậy có thể là trả lại một cái gì đó từ dịch vụ của bạn (thậm chí là một không gian đơn).

+0

do đó, u có nghĩa là để nói rằng tôi cần phải một số điều như những gì Teja nói? – nimi

+0

@Nimesh, vâng .. nhưng nó phụ thuộc vào những gì bạn mong đợi để nhận lại từ dịch vụ .. là nó XML? hay là JSON? HTML? Bản văn ? –

+0

JSON là định dạng. Tôi đang sử dụng một thuộc tính được trang trí theo phương thức dịch vụ WCF như WebMessageFormat.Json – nimi

0

async cũng là một phần của các tùy chọn. Cũng xác định dataType như xml

function Update(Id) { 
    $.ajax({ 
     type: "GET", 
     async: false, 
     dataType: "XML", 
     url: ROOT_URL + "/sevice/udates.svc/Update?Id=" + Id, 
     success: function(response) { 

     } 
    }); 
} 
0

Bạn cần gửi tài liệu html để đầu ra (các udates.svc đầu ra trong trường hợp của bạn). Nếu bạn sử dụng ASP.NET, bạn có thể làm như sau:

Response.Clear(); 
Response.Write("<html xmlns=”http://www.w3.org/1999/xhtml”>"); 
Response.Write("<head><title></title></head>"); 
Response.Write("<body>"); 
Response.Write("your output"); 
Response.Write("</body>"); 
Response.Write("</html>"); 
Response.ContentType = "text/HTML"; 
Response.End(); 
4

Đó là lỗi FireFox đã biết. https://bugzilla.mozilla.org/show_bug.cgi?id=547718 để khắc phục nhanh điều này, bạn có thể trả về phản hồi với cấu trúc html (nhưng không có nội dung).

+2

Đã không được khắc phục trong 3 năm và không có vẻ hứa hẹn ... – PandaWood

+0

Tôi đang trả về html và có bộ ajax jQuery của tôi để có dataType: "html" và tôi cũng nhận được lỗi này trong Firefox. Một lỗi phải được giới thiệu tại một số điểm vì trước đây tôi chưa có lỗi. – mikato

19

Tôi đã khắc phục sự cố bằng cách đặt mimeType thành "text/html"

+0

Tương tự ở đây. Thêm mimeType: 'text/html' vào cuộc gọi POST ajax đã giải quyết được vấn đề trong IceWeasel. – Laurimann

+2

Yêu cầu AWS S3 PUT trả về 200 mã trạng thái và không có ContentType, vì vậy jQuery ném lỗi này. Việc thêm 'dataType: 'text'' sẽ không có ích, nhưng việc thêm' mimeType:' text/html'' sẽ giúp ích. – Justinas

+0

@Justinas bình luận là người duy nhất làm việc cho tôi (Firefox) – Motoko

5

Tôi đã gặp một nguyên nhân thay thế này - có thể giúp ai đó.

Nếu bạn thực hiện một yêu cầu $.ajax (trong trường hợp của tôi yêu cầu PUT) trả về một tiêu đề 200 nhưng không có nội dung cơ thể tôi đã nhìn thấy thông báo lỗi Parsing XML cùng này xảy ra - ngay cả khi dataType được thiết lập để json.

(Ít nhất) hai giải pháp làm việc:

  • Làm cho tất cả API PUT yêu cầu quay trở lại một số nội dung, hoặc
  • Return một 'Không có nội dung' tiêu đề 204 thay vì (những gì tôi đã kết thúc làm)
+1

Tôi đã trả lại 204 cho DELETE không có nội dung phản hồi và tôi vẫn thấy điều này. :( –

+0

Nhưng trở về một không gian như cơ thể làm việc. Upvote cho bạn. :) –

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