2008-09-17 72 views
10

Tôi đã xác định rằng JSON của tôi, đến từ máy chủ, là hợp lệ (thực hiện cuộc gọi ajax theo cách thủ công), nhưng tôi thực sự muốn sử dụng JQuery. Tôi cũng đã xác định rằng url "bài đăng", đang được gửi đến máy chủ, là chính xác, sử dụng firebug. Tuy nhiên, lỗi gọi lại vẫn đang được kích hoạt (parsererror). Tôi cũng đã thử datatype: văn bản.Không thể nhận JSON từ cuộc gọi ajax của JQuery

Có các tùy chọn khác mà tôi nên đưa vào không?

$(function() { 
    $("#submit").bind("click", function() { 
     $.ajax({ 
      type: "post", 
      url: "http://myServer/cgi-bin/broker" , 
      datatype: "json", 
      data: {'start' : start,'end' : end}, 
      error: function(request,error){ 
       alert(error); 
      }, 
      success: function(request) { 
       alert(request.length); 
      } 
     }); // End ajax 
    }); // End bind 
}); // End eventlistener 

Trả lời

19

Dưới đây là một vài gợi ý tôi sẽ cố gắng:

1) 'datatype' tùy chọn mà bạn đã chỉ định sẽ là 'datatype' (case-sensitive Tôi tin)

2) hãy thử sử dụng tùy chọn 'contentType' như sau:

contentType: "application/json; charset=utf-8" 

Tôi không biết số tiền này sẽ giúp ích như được sử dụng trong yêu cầu tới url bài đăng của bạn, không phải trong phản hồi. Xem bài viết này để biết thêm: http://encosia.com/2008/06/05/3-mistakes-to-avoid-when-using-jquery-with-aspnet-ajax (Nó được viết cho asp.net, nhưng có thể được áp dụng)

3) Ba kiểm tra đầu ra của bài url của bạn và chạy ra thông qua một validator JSON chỉ để được hoàn toàn chắc chắn nó hợp lệ và có thể được phân tích cú pháp thành một đối tượng JSON. http://www.jsonlint.com

Hy vọng một số điều này sẽ hữu ích!

+0

cảm ơn bạn đã dành thời gian trả lời. nó là tùy chọn dataType mà tôi đã có như kiểu dữ liệu –

+7

Chỉ cần một lưu ý, thiết lập dataType thành "json" sẽ tự động đặt contentType thành "application/json". – bhollis

+0

@BHR +1 đúng theo tài liệu. Tuy nhiên, có thể hữu ích để lưu ý: Tôi đang làm việc với jquery 1.6.4 atm và đã tìm thấy tôi cần phải thiết lập rõ ràng contentType: "application/json; charset = utf-8" – zack

0

Thông số dữ liệu sai. Dưới đây là một ví dụ mà hoạt động:

dữ liệu: {index: ddl.selectedIndex},

này contructs một đối tượng với tài sản được gọi là chỉ số có giá trị ddl.selectedIndex.

Bạn cần phải loại bỏ các dấu ngoặc kép từ dòng tham số dữ liệu của bạn

Chúc may mắn Một

+0

-1, nó là cú pháp hoàn toàn hợp lệ để có một chuỗi dưới dạng tên thuộc tính. Trong một số trường hợp, nó là phải, ví dụ khi bạn có một tên thuộc tính mà không phải là một tên định danh hợp lệ trong javascript, trích dẫn nó sẽ cho phép bạn cung cấp cho nó một giá trị anyway. Một ví dụ phổ biến là '" class "', mà phải được trích dẫn vì nó là một từ dành riêng. Trong cú pháp JSON nó thậm chí còn là một yêu cầu để bọc tất cả các tên thuộc tính trong dấu nháy kép. – DarthJDG

1

Tại sao myResult thay vì request?

success: function(request) { 
       alert(myResult.length); 
      } 
+0

Tôi khá chắc chắn trong mã đầy đủ của tôi Tôi đã thao tác yêu cầu vào myResult .... nhưng tôi đã thay đổi nó để nó rõ ràng hơn ... vấn đề là dataType được viết là 'datatype'. Cảm ơn vì bình luận –

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