从PHP返回JSON数据,并使用Javascript使用它

时间:2011-01-14 16:12:59

标签: php javascript web-services json callback

我使用过JSON数据,Jquery的getJSON方法使用PHP的服务器端脚本来获取数据。现在我正在尝试使用由PHP函数和Javascript事件返回的JSON数据,或者url将获取该数据。对于访问PHP数据的Javascript函数,它必须有一个回调,我无法弄清楚,我应该如何创建一个回调。

我在PHP文件中的现有代码(getData.php)可以回显/返回JSON输出,并提供看起来像这样的数据

{"count":3,"items":[{"myTab_ID":"1","myTab_xam":"test1","myTab_rank":"21"},
{"myTab_ID":"2","myTab_xam":"test2","myTab_rank":"22"},
{"myTab_ID":"3","myTab_xam":"test3","myTab_rank":"22"}]}

现在我的javascript文件正在进行调用,这有点像推特,

 <html>
    <head>
      <script type="text/javascript" src="http://myserver/getdata.php">
      </script>
   </head>
 </html>

现在,当我运行此html文件时,出现错误

  

“错误:无效标签源文件:   http://myserver/getData.php行:1,   专栏:1源代码:   { “计数”:3 “项”:[{ “myTab_ID”: “1”, “myTab_xam”: “测试1”, “myTab_rank”: “21”},{ “myTab_ID”: “2”, “myTab_xam” : “TEST2”, “myTab_rank”: “22”},{ “myTab_ID”: “3”, “myTab_xam”: “TEST3”, “myTab_rank”: “22”}]}“

在错误控制台中。

我有点高兴我至少可以从我的php端获取数据到html文件,但现在我很想知道如何使用返回的JSON数据。我将如何开发返回JSON数据的回调函数?

> ------code in getData.php---------------
> 
> $con =
> mysql_connect("localhost","peter","abc123");
> if (!$con)   {   die('Could not
> connect: ' . mysql_error());   }
> 
> mysql_select_db("my_db", $con);
> 
> $result = mysql_query("SELECT * FROM
> Persons");
> 
> while($row =
> mysql_fetch_array($result))   {  
> $data[] = $row;   }
> 
> echo json_encode($data);
> 
> --------------end - getdata.php--------------
> 
> ---------code in getJson.html------------- html> <head>
> <script type="text/javascript"
> src="http://myserver/getdata.php">
> </script> </head>
> 
> </html>
> -----------------------end- getJson.html----------

我不确定回调如何才能获取数据?

3 个答案:

答案 0 :(得分:2)

不要忘记getData.php中的标题:

header('Content-type: application/json');

Some useful examples in the php manual

答案 1 :(得分:1)

您收到该错误,因为JSON构造对JavaScript解析器来说简直是错误的。在裸露的大括号({)之后,Javascript需要一个声明。

您的代码似乎期望将JSON 简单地作为<script>包含在页面中,而是由XMLHttpRequest(即“ajax”主动获取) “)。这是非常常见的,它与<script>标签给你的完全不同。在这种情况下,JSON构造由客户端代码显式解析,并用于所需的任何内容。

答案 2 :(得分:0)

如果你想让json编码的$ data数组在javascript中可用,你可以这样做:

<?php $jencodeddata = json_encode($data); ?>
HTML文件中的

..

<script type="text/javascript">
function doSOmething()
{    
var jsencodedata = '<?php print $jencodeddata ?>';
you can loop through jsencodedata here....
}
</script>

希望这会有所帮助。