jQuery.ajax () v1.5 возвращает «parsererror» для данных json - PullRequest
7 голосов
/ 11 февраля 2011

У меня есть эта функция для получения идентификатора сервера из списка. Функция всегда возвращает "parsererror". Я посмотрел на возвращенные данные JSON, но я не могу заставить их работать, поскольку jQuery переписал ajax в v1.5.

function server_id()
{
    $.ajax({
        type: "GET",
        url: "http://localhost/server_list.php",
        dataType: "json", 
        success: function(data, status) {
             alert(status + "\n\n" + data.server_id);
        },
        complete: function(data, status){
                  alert(status);
        }
    });

}

server_list.php

    header('Content-type: application/json');

    $output['server_id'] = '123';
    print json_encode($output);

В Firebug Net >> XHR он читает его как JSON, когда открывает вкладку, а вкладка Response показывает, что ниже.

{"server_id":"123"}

Я также попытался установить заголовок типа контента, как показано ниже, но безуспешно.

Content-type: application/json

ОБНОВЛЕНО

Я получаю "parsererror" только в том случае, если подключаемый модуль проверки загружен из http://bassistance.de/jquery-plugins/jquery-plugin-validation docs.jquery.com / Плагины / Проверка v1.7.

Если вы добавите плагин, jquery автоматически добавит обратный вызов jsonp в строку запроса, даже если вы установили значение false или не включаете пармы для jsonp. Очень странно

Есть идеи как починить?

Спасибо

Ответы [ 3 ]

2 голосов
/ 08 марта 2011

Простое решение здесь, по-видимому, заключается в том, что jQuery 1.5 не совместим с 1.7 плагина для валидации.Переход на jQuery 1.4.x (или иное исправление или удаление кода подключаемого модуля проверки, как предложил philhag) решает проблему.

Огромное спасибо тем, кто в этом потоке выявил конфликт.Это избавило меня от головной боли, связанной с отладкой кода jQuery.

0 голосов
/ 13 июля 2012

Я страдал в течение нескольких дней, прежде чем нашел эту ветку, благодаря тем, кто указал на jQuery.validate как на виновника.

В моем тестировании это на самом деле похоже на jquery.validate-vsdoc.js, который вызывает проблему, а не на сам плагин, на случай, если это кому-нибудь пригодится.

0 голосов
/ 11 февраля 2011

Похоже, вы хотите регулярное соединение с json (dataType - это "json" вместо "jsonp", а server_list.php отправляет json), но вы устанавливаете jsonp опции.Удалите строки jsonp и jsonpcallback.Установка jsonp в false не означает, что вы отключите его!

Когда эти две строки закомментированы, кажется, что все работает нормально .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...