Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用AJAX显示JSON信息_Php_Jquery_Html_Ajax_Json - Fatal编程技术网

Php 如何使用AJAX显示JSON信息

Php 如何使用AJAX显示JSON信息,php,jquery,html,ajax,json,Php,Jquery,Html,Ajax,Json,我正在使用AJAX创建一个显示json文件的文件。我现在的问题是它只打印第一行,我希望它打印所有4行。我尝试在json.php中的原始语句下添加另一个print语句,但这只会导致错误 下面是我的index.html文件中的json函数 function getJSON() { var xmlHttp = xmlHttpObjCreate(); if (!xmlHttp) { alert("The browser doesn't su

我正在使用AJAX创建一个显示json文件的文件。我现在的问题是它只打印第一行,我希望它打印所有4行。我尝试在json.php中的原始语句下添加另一个print语句,但这只会导致错误

下面是我的index.html文件中的json函数

function getJSON() {
        var xmlHttp = xmlHttpObjCreate();
        if (!xmlHttp) {
                alert("The browser doesn't support this action.");
                return;
        }

        xmlHttp.onload = function() {
                if (xmlHttp.status == 200) {

                        // Get Response Text
                        var response = xmlHttp.responseText;

                        // Prints the JSON string
                        console.dir(response);

                        // Get div object
                        var divObj = document.getElementById('dinoJSON');

                        // We used JSON.parse to turn the JSON string into an object
                        var responseObject = JSON.parse(response);

                        // This is our object
                        console.dir(responseObject);


                        // We can use that object like so:
                        divObj.innerHTML = responseObject.name + " lived during the " + responseObject.pet;

                }
        }

        xmlHttp.open("GET", "json.php", true);
        xmlHttp.send();
}
json.php

<?php
    // Print the json
    $result = array('name' => 'Staurikosaurus', 'pet' => 'Triassic');
    $result2 = array('name' => 'Diplodocus', 'pet' => 'Jurassic');
    $result3 = array('name' => 'Stegosaurus', 'pet' => 'Jurassic');
    $result4 = array('name' => 'Tyrannosaurus', 'pet' => 'Cretaceous');

    print json_encode($result);

?>
因此,现在按下按钮时,我的程序显示:

Staurikosaurus lived during the Triassic
我想让我的程序显示这个

Staurikosaurus lived during the Triassic 
Diplodocus lived during the Jurassic 
Stegosaurus lived during the Jurassic 
Tyrannosaurus lived during the Cretaceous

您只返回第一个数组(
$result
),而不返回其他数组(
$result2、$result3、$result4

我建议将每对值添加到一个数组中:

$result=array(
数组('name'=>'Staurikosaurus','pet'=>'Triassic'),
数组('name'=>'Diplodocus','pet'=>'Jurassic'),
数组('name'=>'Stegosaurus','pet'=>'Jurassic'),
数组('name'=>'霸王龙','pet'=>'白垩纪')
);
然后输出json_编码的数组:

print json_encode($result,JSON_FORCE_OBJECT);
这将为您提供一个JSON对象,如下所示:

{
"0":{  
“名称”:“斯塔里科索罗斯”,
“宠物”:“三叠纪”
},
"1":{  
“名称”:“双龙”,
“宠物”:“侏罗纪”
},
"2":{  
“名称”:“剑龙”,
“宠物”:“侏罗纪”
},
"3":{  
“名称”:“暴龙”,
“宠物”:“白垩纪”
}
}
然后使用JavaScript循环遍历结果,类似这样(但输出由您选择):

编辑: 或者,要使其格式更像您的代码,请执行以下操作:

// We can use that object like so:
for (i in responseObject) {
    divObj.innerHTML += "<p>"+responseObject[i].name + " lived during the " + responseObject[i].pet + "period.</p>";
}    
//我们可以这样使用该对象:
对于(我响应对象){
divObj.innerHTML+=“”+responseObject[i].name+”在“+responseObject[i].pet+”期间居住。

”; }
var responseObject={
"0":{  
“名称”:“斯塔里科索罗斯”,
“宠物”:“三叠纪”
},
"1":{  
“名称”:“双龙”,
“宠物”:“侏罗纪”
},
"2":{  
“名称”:“剑龙”,
“宠物”:“侏罗纪”
},
"3":{  
“名称”:“暴龙”,
“宠物”:“白垩纪”
}
};
//获取div对象
var divObj=document.getElementById('dinoJSON');
//循环使用JSON
对于(我响应对象){
divObj.innerHTML+=“”+responseObject[i].name+”在“+responseObject[i].pet+”期间居住。

”; }

我的坏消息删除了另一个答案请尝试将json数组更改为类似的内容

$result = array(
    array(
        "name" => "Staurikosaurus",
        "pet" => "Triassic"
    ),
    array(
        "name" => "Diplodocus",
        "pet'" => "Jurassic"
    ),
    array(
        "name" => "Stegosaurus",
        "pet'" => "Jurassic"
    ),
    array(
        "name" => "Tyrannosaurus",
        "pet'" => "Cretaceous"
    )
);
print json_encode($result);
$result = array( array( 'name' => 'Staurikosaurus', 'pet' => 'Triassic' ), array( 'name' => 'Diplodocus', 'pet' => 'Jurassic' ), array( 'name' => 'Stegosaurus', 'pet' => 'Jurassic' ), array( 'name' => 'Tyrannosaurus', 'pet' => 'Cretaceous' ) );
foreach ($result as $names){
    echo $names['name'].' lived during the '.$names['pet'].'<br />';
}
试试这个

<?php
    // Print the json
    $result[] = array('name' => 'Staurikosaurus', 'pet' => 'Triassic');
    $result[] = array('name' => 'Diplodocus', 'pet' => 'Jurassic');
    $result[] = array('name' => 'Stegosaurus', 'pet' => 'Jurassic');
    $result[] = array('name' => 'Tyrannosaurus', 'pet' => 'Cretaceous');

    print json_encode($result);

?>


问题是您只打印第一个数组,这就是为什么您只看到它打印第一行。

如果您试图在网页或类似的内容上显示,您可以自己执行php并执行类似操作

$result = array(
    array(
        "name" => "Staurikosaurus",
        "pet" => "Triassic"
    ),
    array(
        "name" => "Diplodocus",
        "pet'" => "Jurassic"
    ),
    array(
        "name" => "Stegosaurus",
        "pet'" => "Jurassic"
    ),
    array(
        "name" => "Tyrannosaurus",
        "pet'" => "Cretaceous"
    )
);
print json_encode($result);
$result = array( array( 'name' => 'Staurikosaurus', 'pet' => 'Triassic' ), array( 'name' => 'Diplodocus', 'pet' => 'Jurassic' ), array( 'name' => 'Stegosaurus', 'pet' => 'Jurassic' ), array( 'name' => 'Tyrannosaurus', 'pet' => 'Cretaceous' ) );
foreach ($result as $names){
    echo $names['name'].' lived during the '.$names['pet'].'<br />';
}

您只返回第一个数组(
$result
),而不返回其他数组(
$result2、$result3、$result4
)。我建议将每一行添加到一个数组中,返回json_编码的数组,然后在javascript中循环响应。@showdev我该怎么做?我能以某种方式将它们组合成一个数组吗?想想有人也打败了我吧:Pit现在打印出这个“未定义期间未定义的活动”
$result=array(array(“name”=>“Staurikosaurus”),“宠物”=>“三叠纪”,数组(“名字”=>“双龙”,“宠物”=>“侏罗纪”),数组(“名字”=>“剑龙”,“宠物”=>“侏罗纪”),数组(“名字”=>“暴龙”,“宠物”=>“白垩纪”)
@ryan jimmy-是我的错吗有一个
它不属于哪里现在应该工作等等,那么我应该在哪里将它添加到我的index.html文件中?循环遍历JavaScript的代码。我添加它的地方给了我一个错误,将
for
循环放到
//我们可以像这样使用该对象:
。请注意,您使用的是变量
responseObject
,而不是
response
,因此在使用循环时,请对此进行调整。我现在很困惑,我尝试了下面的方法,但没有成功。如果您愿意,我现在将尝试您的问题,编辑您的问题以显示您正在尝试的内容,并让我们知道出现了什么问题。我现在未捕获此错误类型错误:无法读取空索引的属性'appendChild'。html:74行此行是“document.getElementById('output')。appendChild(line);”行我尝试了此操作,其输出是这样的“undefined在undefined期间生存”您必须循环它来获取每个值,因为它是一个数组。我应该把这个循环放在哪里?当您从ajax请求获取数组值时,放在前端脚本上。
Staurikosaurus lived during the Triassic
Diplodocus lived during the Jurassic
Stegosaurus lived during the Jurassic
Tyrannosaurus lived during the Cretaceous