2012-06-13 23 views
5

Đây là mã jQuery client-side của tôi:jQuery dường như không phân tích cú pháp JSON tự động

$.ajaxSetup ({ 
    contentType: "application/json", 
    datatype: 'json' 
}); 

$.ajax({ 
    type: "POST", 
    url: "http://localhost:1234/path", 
    data: JSON.stringify(myData), 
    success: function(aString){ 
     alert(aString); 
    }, 
    error: function(errorData){ 
     alert(errorData); 
    } 
}); 

Đây là dữ liệu máy chủ gửi ra:

200 
Content-Type: application/json 

"aStringsData" 

Trong cảnh báo có dấu ngoặc kép của " aStringData "được hiển thị. Tuy nhiên, tôi hy vọng các dấu ngoặc kép sẽ bị lấy đi do JSON.parse tự động mà tôi mong đợi sẽ xảy ra từ kiểu dữ liệu: 'json'. Tôi có sai về điều này không?

+2

JavaScript là trường hợp nhạy cảm. 'dataType! == datatype'. – Matt

+0

Cảm ơn nhiều, có lẽ tôi sẽ không tìm ra nó trong một thời gian yên tĩnh .. – hansi

Trả lời

5

Thông số thực tế là dataType, không phải datatype (JavaScript phân biệt chữ hoa chữ thường).

Bạn có thể thử với:

dataType: 'json' // not datatype 

trong bạn ajaxSetup;

+0

@Matt cảm ơn Ngài – thecodeparadox

+0

Cảm ơn, đã giải quyết được vấn đề! – hansi

+0

@hansi bạn được chào đón, vui mừng được giúp đỡ – thecodeparadox

0

phản ứng của bạn:

"aStringsData" 

không hợp lệ JSON Tôi tin rằng, như JSON phải bắt đầu với một {, phải không ?.

Bạn có thể có nghĩa

{ 
"string": "data" 
} 
+0

Không chính xác. Một chuỗi của chính nó là * JSON hoàn toàn hợp lệ. http://json.org – Matt

+0

Vâng, nó có thể là một đối tượng, hoặc một danh sách những thứ (giống như một chuỗi), nhưng không phải là một chuỗi trong chính nó, phải không? (Tất nhiên, tôi có thể nhầm lẫn, nhưng 3 trình xác nhận đầu tiên tôi đã thử cùng một lời) – Nanne

+0

@matt: trang json bạn liên kết có 2 bolletpoints: họ cho biết đó là một đối tượng hoặc danh sách. Có _is_ một định nghĩa về "giá trị" sau này, chắc chắn, nhưng nó không nói rằng giá trị một mình là JSON hợp lệ khi tôi đọc nó. – Nanne

-1

bạn có thể thử sử dụng một cái gì đó như thế này:

eval(aString) 
+0

Điều này không đến * đóng * để trả lời câu hỏi. Câu hỏi đặt ra là hỏi * tại sao * JSON không được phân tích cú pháp tự động, không phải cách thực hiện. – Matt

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