jquery — парсер getJSON не может обработать вывод JSON из файла PHP

У меня есть скрипт php, который возвращает следующий json с моего сервера SQL:

<?php

$server = "DEVTEST-PC\\SRVCLT";
$options = array("UID"=>"sa","PWD"=>"1234","Database"=>"Test");
$conn = sqlsrv_connect($server, $options);


if ($conn === false) die("<pre>".print_r(sqlsrv_errors(), true));
//echo "Successfully connected!";


$result = sqlsrv_query($conn,"SELECT Currency, USDRate FROM Pax.CurrencyRate
WHERE GBPRate BETWEEN 80 AND 800;");

if($result === false) {
die( print_r( sqlsrv_errors(), true) );
}

while( $row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC) ) {

$myArray['paxcurjson'][] = $row;
}
echo json_encode($myArray);
?>

Вывод следующий:

{"paxcurjson":[
{"Currency":"AFN","USDRate":49.5},
{"Currency":"ALL","USDRate":103.567},
{"Currency":"BDT","USDRate":77.562},
{"Currency":"DZD","USDRate":79.6146}]}

Я использую Jquery для разбора, но по какой-то причине он не разбирается. Мой код выглядит следующим образом:

<script type = "text/javascript" language = "javascript" >

var url = 'CurrencyQuery.php';

$.getJSON(url, function(data){

for (i = 0; i < data.paxcurjson.length; i++) {

console.log(data.paxcurjson[2].Currency);

};

});

</script>

Единственное сообщение об ошибке, которое я получаю из консоли:

08: 52: 52.661 элемент не найден1 CurrencyQuery.php: 24: 4

Это в основном относится к моему PHP-скрипту, возвращающему json. У меня нет никаких идей, почему это не работает. Я проверил JSON с помощью онлайн-валидатора, и, кажется, все в порядке, а Jquery — нормально. Кто-нибудь может дать мне подсказку?

5

Решение

Необходимо немного изменить вывод PHP, чтобы обработать его Javascript или JQuery

<?php
//just set a header before output
header('Content-Type:application/json;');
echo json_encode($myArray);

это всегда работает для меня.

еще одна вещь, когда вам нужно использовать вывод PHP в качестве JSON API для анализа в JQuery и т. д … Я предлагаю вам установить обработку ошибок на false, потому что ошибки, отображаемые в PHP, могут привести к тому, что вывод json не будет читаться jquery

0

Другие решения

Спасибо всем, я разобрался с решением. Мне пришлось обернуть JSON-кодированные данные из моего php-скрипта в функцию обратного вызова. Я мог бы получить данные тогда. Я не уверен, что это лучший способ решить эту проблему, но пока он работает 🙂

0

По вопросам рекламы [email protected]