PHP json_在javascript中编码然后获取json问题

PHP 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

对不起,如果这仍然是另一个线程的主题,但我挣扎了几个小时,但无法找到解决方案。 我试图从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 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