JQuery-запрос Jquery получает 200 ответов с данными, но ошибка флагов - PullRequest
5 голосов
/ 28 июня 2011

Получил простую коробку автозаполнения (jquery ui), которая получает свой источник от веб-службы. Код выглядит примерно так:

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);

Глядя в fiddler и даже в панель Firebug Firefox, я вижу, что JSON возвращается правильно, а ответ сервера равен 200. Я даже проверил созданный фрагмент сценария jsonp, который также содержит правильный JSON. Однако он всегда срабатывает в функции ошибки, а не в функции успеха.

Я также пытался использовать complete и получать данные из xhr вручную, однако responseText и responseXml оба не определены. Содержащаяся ошибка говорит об ошибке синтаксического анализа, но все это выглядит синтаксически правильно, как у json, так как на панели firebug и fiddler все отображается нормально.

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 Ответ

5 голосов
/ 28 июня 2011

Это JSON не правильно,

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

должно быть

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

JSON требует двойных кавычек.

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

Значением может быть строка в двойных кавычках, или число, или true, или false, или null, или объект или массив. Эти структуры могут быть вложенными.

Взять: http://www.json.org/

...