Обработка данных из запроса AJAX - PullRequest
0 голосов
/ 12 июня 2010

У меня есть PHP API, с которым я работаю, который выводит все как JSON.

Мне нужно вызвать один из методов API и разобрать его с помощью запроса AJAX. Я использую jQuery (хотя это не должно иметь значения).

Когда я делаю запрос, он выдает ошибку "parsererror" в виде textStatus и "Синтаксическая ошибка: недопустимая метка" при выполнении запроса.

Упрощенный код:

$.ajax
({
    type: "POST",
    url: "http://mydomain.com/api/get/userlist/"+mid,
    dataType: "json",
    dataFilter: function(data, type)
    {
        /* Here we assume and pray */
        users = eval(data);
        alert(users[1].id);
    },
    success: function(data, textStatus, XMLHttpRequest)
    {
        alert(data.length); // Should be an array, yet is undefined.
    },
    error: function(XMLHttpRequest, textStatus, errorThrown)
    {
        alert(textStatus);
        alert(errorThrown);
    },
    complete: function(XMLHttpRequest, textStatus)
    {
        alert("Done");
    }
});

Если я остановлюсь на eval(data), тогда все будет нормально. Ну, за исключением того, что data все еще не определено в success. Обратите внимание, что я беру массив объектов в PHP и затем пропускаю их через json_encode. Будет ли это иметь значение?

Не было достигнуто никакого прогресса в этом. Я готов добавить больше кода, если кто-то считает, что он может помочь.

Вот PHP-сторона вещей

private function _get_user_colors($id)
{
    $u = new User();
    $u->get_where(array('id' => $id));

    $bar = array();

    $bar['user'] = $u->stored;

    foreach($user->colors as $color)
    {
        $bar['colors'][] = $color;
    }

    echo(json_encode($bar));
}

У меня были ноль проблем при использовании этого с другими сценариями на основе PHP. Я не знаю, почему Javascript с этим не согласен.

Ответы [ 2 ]

1 голос
/ 12 июня 2010

Попробуйте вывести alert(request.responseText) (и переименуйте первый аргумент в request) в вашем обработчике ошибок. Это должно исправить вас с ошибочным выводом вашего скрипта.

1 голос
/ 12 июня 2010

Parsererror обычно указывает, что ответ от сервера искажен.Если вы загружаете его прямо в браузере, это выглядит хорошо?

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