getJSON解析器无法处理PHP文件中的JSON输出


getJSON parser cannot process JSON output from PHP file

我有一个php脚本,它从我的SQL Server返回以下json:

<?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编码数据封装在回调函数中。那时我可以检索数据。我不确定这是否是处理这个问题的最佳方法,但到目前为止它是有效的:)