У меня есть 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 с этим не согласен.