PHP json_在javascript中编码然后获取json问题
对不起,如果这仍然是另一个线程的主题,但我挣扎了几个小时,但无法找到解决方案。 我试图从Mysql数据库获取数据,用php创建一个JSON,然后用javascript解析这个JSON 这是我的json.phpPHP json_在javascript中编码然后获取json问题,javascript,php,getjson,json,Javascript,Php,Getjson,Json,对不起,如果这仍然是另一个线程的主题,但我挣扎了几个小时,但无法找到解决方案。 我试图从Mysql数据库获取数据,用php创建一个JSON,然后用javascript解析这个JSON 这是我的json.php <?php $link = mysql_pconnect("localhost", "root", "") or die("Could not connect". mysql_error()); mysql_select_db("people") or die("Could not
<?php
$link = mysql_pconnect("localhost", "root", "") or die("Could not connect". mysql_error());
mysql_select_db("people") or die("Could not select database");
$arr = array();
$rs = mysql_query("SELECT * FROM nom");
while($obj = mysql_fetch_object($rs)) {
$arr[] = $obj;
}
echo '{"users":',json_encode($arr),'}';
/*
//The json object is :
{"users":[{"id":"1","prenom":"Alain","age":"23"},{"id":"2","prenom":"Bruno","age":"24"}]}
*/
?>
然后我尝试将其解析为java
<div id="placeholder6"></div>
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script>
$.getJSON('http://localhost/json.php', function(data) {
var output="<ul>";
for (var i in data.users) {
output+="<li>" + data.users[i].id + " " + data.users[i].prenom + "--" + data.users[i].age+"</li>";
}
output+="</ul>";
document.getElementById("placeholder6").innerHTML=output;
});
</script>
当我用data.json文件中的结果替换localhost/json.php时,它可以工作,当我用firefox打开localhost/json.php时,我可以看到json表……所以我不知道为什么它不能与localhost/json.php一起工作。
我的php代码或javascript代码是否错误
提前感谢您的帮助 在php中试试这个
while($obj = mysql_fetch_object($rs)) {
$arr[] = $obj;
}
$return = new stdClass();
$return ->users = $arr;
echo json_encode($return);
试试这个方法
var users= data.users;
$.each(users,function(index,users){
console.log(users.prenom); /// and users.id etc
})
我认为您的web应用程序服务器(如Apache或nginx)会发送内容类型:默认情况下为json.php文件发送text/html或类似的内容。另一方面,看起来$.getJSON方法需要一个application/json内容类型字段 尝试添加:
header("Content-Type: application/json");
到json.php文件的顶部
编辑-其他信息:
我在$.getJSON方法的原始文档中找不到它实际上是否需要特定的内容类型,因此我查看了源代码:
下面是jQuery 1.7.1的源代码行,这是您说过要使用的版本,我希望是getJSON,正如您所看到的,它调用jQuery.get,最后一个参数设置为json
反过来,jQuery.get文档揭示了此参数的含义:
期望从服务器获得的数据类型。默认值:智能猜测xml、json、脚本或html
发件人:
因此,当您调用$.getJSON/url/to/file时。。。第一个参数应该是JSON。如果您从我的答案顶部添加PHP代码,您的web应用程序服务器将把PHP文件的输出屏蔽为JSON。您好,谢谢您的回答。即使我将json.php替换为data.json.var data={users:[{id:1,prenom:Alain,age:23},{id:2,prenom:Bruno,age:24}]},它也不起作用;var users=data.users;$。eachusers,functionindex,users{console.logusers.prenom;///和users.id等}谢谢。这对我不起作用。我用。你用什么?谢谢你的提示;我得到了这个错误:XMLHttpRequest无法加载。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“null”。我当然尝试了。我猜是json_编码,而不是jsob_编码。当我用firefox打开json.php文件时,它现在没有显示任何内容。这正常吗?最后它成功了,我不得不添加headerContent类型:application/json;和headerAccess控制允许原点:*;到我的php文件。
https://github.com/jquery/jquery/blob/1.7.1/src/ajax.js#L294