Недавно я обновил свой PHP и код, который использовался для анализа моего PHP, до того, как Ajax перестала работать. Я изменил мой PHP использовать PDO и должен был изменить свое возвращение заявление с помощью jsoncallback просто JSon закодировать:Ошибка Parsing AJAX
<?php
header('Content-type: application/json');
$con = new PDO('mysql:host=localhost;dbname=db;charset=utf8mb4;''root', 'pass', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$sql = "SELECT idlocations, name, latitude, longitude FROM `locations`";
$con->query("SET NAMES utf8");
$result = $con->query($sql);
$records = array();
if($result !== false)
{
$records = $result->fetchAll(PDO::FETCH_ASSOC);
print_r($records);
//$_GET['jsoncallback'] . '(' . json_encode($records) . ');';
echo json_encode($records);
}
else
{
print_r($con->errorInfo());
}
?>
Код выше вернет следующее:
Array
(
[0] => Array
(
[idlocations] => 1
[name] => BierMarkt
[latitude] => -79.3708
[longitude] => 43.6473
)
[1] => Array
(
[idlocations] => 2
[name] => jacks
[latitude] => -79.4200
[longitude] => 43.6555
)
)
[{"idlocations":"1","name":"BierMarkt","latitude":"-79.3708","longitude":"43.6473"},{"idlocations":"2","name":"jacks","latitude":"-79.4200","longitude":"43.6555"}]
Однако, когда я пытаюсь использовать Ajax вызова из JavaScript, я получаю следующее сообщение об ошибке:
[объект Object]: parsererrorSyntaxError: Неожиданное фишку в JSON в положении 0
JS :
function populateLocations()
{
console.log("inside populate");
//Get other locations from the DB
$.ajax({
url:'http://localhost/VibeSetter/services/getlocations.php',
type: 'POST',
dataType: "json",
timeout: 5000,
success: function(data, status)
{
console.log("inside success");
$.each(data, function(i,item)
{
console.log("inside index");
console.log("item.longitude");
//pass to function to fill array
populateLocationsArray(i+1,item.name, item.longitude, item.latitude);
});
},
error: function(e, ts, et) { console.log(e + " : " + ts + et) }
});
}
function populateLocationsArray(i, name, long, lat)
{
locations[i] = new Array();
locations[i][0] = name;
locations[i][1] = long;
locations[i][2] = lat;
}
Может кто-нибудь, пожалуйста, помогите мне понять, почему я не могу правильно разобрать вывод с моего php? Я пробовал много разных методов, включая удаление 'dataType: "json" и использование JSON.parse по результатам.
Заранее спасибо
Снимите 'print_r ($ записей),' как создает недопустимую JSON. Вы хотите только вывести 'echo json_encode ($ records);' – Sean