Я пытаюсь разобрать JSON, отправленный PHP.Ошибки при анализе недопустимого JSON, переданного с PHP на AJAX
JSON:
[{"id":"1","value":"1"},{"id":"4","value":"1"},{"id":"2","value":"1"},{"id":"3","value":"1"},{"id":"4","value":"1"}]
Я пытаюсь разобрать его, чтобы получить id
и передать его в другую функцию JavaScript, и я постоянно вызов PHP. Когда я попытался $.ajax
, $.get
, $.getJSON
и использовали JSON.parse
и parseJSON
, я получаю эту ошибку:
Uncaught SyntaxError: Unexpected token <
, так как JSON выглядит следующим образом:
id: id: id: html> 1id: 4id: 1id: 2id: 3id: 4id: id: id: >
Я попытался это исправить с помощью JSON.stringify
, что вызвало эта ошибка:
Cannot use 'in' operator to search for 'length' in and now I'm stuck and have no idea how to fix this.
test.php:
<?php
$link = mysql_connect("localhost", "root", "password");
if (!$link) {
die('Could not connect: ' . mysql_error());
}
$db = mysql_select_db("example");
$sql = "select * from data";
$x = mysql_query($sql);
$emparray = array();
while ($row = mysql_fetch_assoc($x)) {
$emparray[] = $row;
}
echo json_encode($emparray);
mysql_close($link);
?>
heatmap.html:
<script>
$(window).ready(function(){
$.ajax({
url:'test.php',
data:"{'id':'1', 'value':'1'}",
contentType: "application/json; charset=utf-8",
datatype: 'json',
success: function (data){setInterval(function(){
/* if I use parseJSON(data), I get "Unexpedted token <"
error */
$.each(data, function (id, value){ // error occures here
liveHeatMap(id); //Never called
});
}, 10000)}});
});
</script>
Я думаю, что проблема в том, что JSON является недействительным. Я пробовал так много вещей и смотрел на многие другие подобные проблемы, но я все еще не могу это исправить.
Где происходят «Неожиданный токен <» ошибка? Это происходит внутри метода 'liveHeatMap()', который вы не показываете, или эта функция не вызвана, потому что до этого происходит ошибка? – nnnnnn
liveHeatMap() никогда не вызывается, «Неожиданный токен <» произошел, когда я использовал parseJSON (данные) – user3505547
Вам не нужно вызывать parseJSON(), потому что jQuery анализирует ответ для вас и передает полученный объект вашему обработчику успеха. (Хотя у вас должен быть 'dataType' с капиталом« T »в ваших вариантах Ajax.) Вы уверены, что test.php вернёт правильную вещь? (Если вы введете тест.php url в адресную строку браузера, что вы получаете?) – nnnnnn