2011-06-28 35 views
5

Có một hộp tự động hoàn tất đơn giản (jquery ui) lấy nguồn của nó từ một dịch vụ web. Mã này là một cái gì đó như dưới đây:Yêu cầu JSONP của Jquery nhận được 200 phản hồi với dữ liệu nhưng lỗi cờ

var autocompleteOptions = { 
    source = getDataFromService, 
    minLength: 3 
}; 

var getDataFromService = function(request, response) { 
    var ajaxOptions = { 
     url: "http://myservice:1234/somedata/", 
     dataType: "jsonp", 
     data: "someVariable = " + request.term, 
     success: function(data) { alert("data"); }, 
     error: function(xhr, description, error) { alert("failed"); } 
    }; 

    $.ajax(ajaxOptions); 
} 

$(someSelector).autocomplete(autocompleteOptions); 

Nhìn trong cáy và thậm chí trong bảng điều khiển firebug Firefox, tôi có thể thấy rằng JSON được trả lại một cách chính xác, và phản ứng máy chủ là một 200. Tôi thậm chí còn kiểm tra các jsonp tạo đoạn mã, cũng chứa JSON chính xác. Tuy nhiên nó luôn luôn nhấn chức năng lỗi không phải là thành công.

Tôi cũng đã thử sử dụng hoàn chỉnh và nhận dữ liệu từ xhr theo cách thủ công, tuy nhiên responseText và responseXml đều không xác định. Lỗi có chứa lỗi phân tích cú pháp, nhưng tất cả dường như là cú pháp chính xác json, vì bảng điều khiển firebug và fiddler đều hiển thị tốt.

HTTP/1.1 200 OK 
Server: ASP.NET Development Server/9.0.0.0 
Date: 28 Jun 2011 11:17:04 GMT 
X-AspNet-Version: 2.0.50727 
X-AspNetMvc-Version: 2.0 
Cache-Control: private 
Content-Type: application/json; charset=utf-8 
Content-Length: 29 
Connection: Close 

[{"id":"1", "somevar":"hello"}] 
+1

Bạn có thể gửi JSON trong câu hỏi? Nếu bạn nhận được "lỗi phân tích cú pháp", phải có lý do ... – Pointy

+0

Sẽ thêm đầu ra thô vào bài đăng gốc nếu nó giúp – somemvcperson

+0

Bạn thấy gì trong hộp cảnh báo khi cuộc gọi AJAX hoàn tất? Hay là nó không cảnh báo? – MoarCodePlz

Trả lời

5

Đó JSON là không đúng,

[{"id":"1", somevar:"hello"}]

cần phải được

[{"id":"1", "somevar":"hello"}]

JSON đòi hỏi dấu ngoặc kép.

http://jsfiddle.net/robert/Y6ypV/

Một giá trị có thể là một chuỗi trong dấu ngoặc kép, hoặc một số, hoặc true hoặc false hoặc null, hoặc một đối tượng hoặc một mảng. Những cấu trúc này có thể được lồng nhau.

Tham Từ: http://www.json.org/

+0

xin lỗi typo, chỉ cần sao chép từ máy khác, nó có chứa các trích dẫn xung quanh dữ liệu trên máy khác một cách chính xác. Sẽ cập nhật bài đăng của tôi. – somemvcperson

+0

http://jsonlint.com/ là trình xác nhận json tuyệt vời - đã sử dụng nó hôm nay :-) –

+0

Tôi không biết có một jsonlint, tôi đang sử dụng jslint trong đường dẫn xây dựng của tôi ... sẽ kiểm tra json trong đó ngay bây giờ. .. * CHỈNH SỬA * Hợp lệ json – somemvcperson

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