JQuery GetJSON из локального сокета - PullRequest
1 голос
/ 30 марта 2011

У меня проблемы с методом json.getJSON. Вот мой текущий код:

var jqxhr = $.getJSON("http://127.0.0.1:5002?callback=?", function() {
                alert("success");
            })
            .success(function() { alert("second success"); })
            .error(function() { alert("error"); })
            .complete(function() { alert("complete"); });

Это почти так же, как пример из документации jquery. Однако я никогда не нажимаю на функцию обратного вызова (alert («success»)). Я всегда получаю предупреждение об ошибке. С пустым обратным вызовом на URL, который я использую, я вижу успешный метод JSON GET в FireBug, и FireBug прекрасно отображает JSON. Без обратного вызова в этом URL я не вижу JSON в Firebug. Однако, когда я нажимаю http://127.0.0.1:5002 напрямую с Firefox, JSON выглядит просто отлично.

Вот JSON:

{"AllData":[{"dataName":"TestData","data":[0,0,0],"color":"Green"}]}

Я пробовал как с обратным вызовом по URL-адресу, так и без него с типами MIME application / json, application / javascript, application / x-json, application / x-javascript, text / javascript и text / plain, но не могу получить предупреждение "success" от .getJSON.

Этот JSON отлично разбирается с jquery.parseJSON и даже отлично работает, когда я использую .getJSON и извлекаю JSON из файла .js.

Есть предложения? Возможно ли чтение JSON из сокета с .getJSON?

1 Ответ

1 голос
/ 31 марта 2011

Вы добавляете ?callback=?, что превращает это в запрос JSONP.При отображении JSON вам необходимо заключить его в функцию обратного вызова, переданную на сервер.

Таким образом, вместо вывода только JSON:

{"AllData":[{"dataName":"TestData","data":[0,0,0],"color":"Green"}]}

Вам необходимо вывести JSONP:

cFunc({"AllData":[{"dataName":"TestData","data":[0,0,0],"color":"Green"}]});

Замените cFunc значением параметра callback GET (например, $_GET['callback'] в PHP).jQuery отправит имя для функции обратного вызова при выполнении запроса XHR, это имя будет ссылкой на обратный вызов, переданный $.getJSON.

...