getJSON 解析器无法处理来自 PHP 文件的 JSON 输出
getJSON parser cannot process JSON output from PHP file
我有一个 php 脚本,其中 returns 以下 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,应该没问题。谁能给我一个线索?
需要更改 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
读取
谢谢大家,我找到了解决办法。我必须将 php 脚本中的 JSON 编码数据包装在回调函数中。那时我可以检索数据。我不确定这是否是处理此问题的最佳方法,但到目前为止它有效:)
我有一个 php 脚本,其中 returns 以下 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,应该没问题。谁能给我一个线索?
需要更改 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
读取谢谢大家,我找到了解决办法。我必须将 php 脚本中的 JSON 编码数据包装在回调函数中。那时我可以检索数据。我不确定这是否是处理此问题的最佳方法,但到目前为止它有效:)