2009-04-26 30 views
8

Thi rằng:thiếu] sau khi danh sách các yếu tố phân tích cú pháp JSON

$.post(
"/url/to/method", 
{ }, 
function(data){ 
    var obj2 = eval("("+$(data).children()+")"); 
    // OR var obj = $.evalJSON($($(data).children())); // Jquery-json 
    $body = $("#AAA"); 
    $body.html(obj.fied); 
}, 
"xml" 
); 

khi biến thành một "thiếu] sau khi danh sách các yếu tố" (ở hàng 5 hoặc 6) lỗi trong firebug. Đầu ra JSON từ phương thức đã được xác thực với jsonlint.com/

Có thể là hiển nhiên nhưng vui lòng là người mới sử dụng AJAX/JSON. Cảm ơn

+4

Không sử dụng 'eval' để phân tích cú pháp dữ liệu JSON. Sử dụng 'JSON.parse' để thay thế. – Gumbo

+1

@Gumbo, JSON.parse đồng ý có thể được tìm thấy tại http://www.json.org/js.html – bendewey

+0

Nếu bạn đăng JSON, nó sẽ dễ dàng hơn để trợ giúp. –

Trả lời

5

Sử dụng phương pháp JSON.parse, hoặc chắc chắn bao gồm một không gian bên cạnh Parens của bạn trước khi đi qua nó để eval ...

eval(" (" + data + ") "); 
+0

Sử dụng eval với dấu cách vẫn không phải là đi (cùng một lỗi). Sử dụng JSON.parse tôi đi một lỗi lạ: text.replace không phải là một hàm, json2.js: 445 –

+0

Vui lòng đăng JSON. Nếu nó chứa thông tin nhạy cảm, hãy tạo lại lỗi bằng cách sử dụng dữ liệu giả. Rõ ràng là có điều gì đó sai trái với nó. –

0

Bạn đang viết những dòng này trong .NET 2.0? Nếu vậy hãy thử xây dựng dữ liệu của bạn thành một chuỗi truy vấn thay vì truyền một đối tượng JSON.

Ví dụ: var1 = alma & var2 = user

đâu "var1" và "var2" là tên của các tham số mà WebMethod bạn mong đợi. Vượt qua điều này bằng cách sử dụng bài đăng .. Dữ liệu: {querystring} Tôi đã gặp sự cố khi chuyển JSON sang webservice trong 2.0.

Chúc may mắn

14

Điều có thể xảy ra là lệnh $ .post của bạn đã trả lại đối tượng JSON. jQuery sẽ cố gắng phát hiện JSON tự động và phân tích nó cho bạn. Khi bạn gọi eval trên một đối tượng JSON như thế này, bạn sẽ thấy lỗi này. Lén lút! Chỉ cần sử dụng đối tượng dữ liệu như vậy.

+0

Tôi gặp vấn đề này, bây giờ chỉ sử dụng đối tượng tôi có thể truy cập vào các thành viên của JSON. Cảm ơn. – Felix

+0

Tôi cũng có thể khắc phục sự cố của mình với câu trả lời này. Cảm ơn. – mVChr

0

Bật ra rằng jQuery sẽ cố gắng tìm hiểu xem kết quả là JSON và phân tích nó tự động, nhưng trong trường hợp này dữ liệu đã là đối tượng JavaScript và không phải là chuỗi JSON đang chờ để được phân tích cú pháp. Vì vậy, bạn có thể sử dụng đối tượng này vì nó thay vì sử dụng eval() và JSON.parse.

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