Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.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
Javascript JSON请求-为什么不显示图片?_Javascript_Json - Fatal编程技术网

Javascript JSON请求-为什么不显示图片?

Javascript JSON请求-为什么不显示图片?,javascript,json,Javascript,Json,此代码用于发送JSON请求并将其存储在变量JSON下。然后,它意味着根据键的值显示图片(特别是如果键的性别=男性)。没有图片显示,我在任何地方都找不到解决方案,有人能帮忙吗 var i=20 而(i试试这个: var i=20 虽然(i您的代码有很多问题,但最重要的是您似乎误解了AJAX的工作原理 var json = new XMLHttpRequest(); json.open('GET', "http://localhost:8081/getPersons?format=json",

此代码用于发送JSON请求并将其存储在变量JSON下。然后,它意味着根据键的值显示图片(特别是如果键的性别=男性)。没有图片显示,我在任何地方都找不到解决方案,有人能帮忙吗

var i=20
而(i试试这个:

var i=20

虽然(i您的代码有很多问题,但最重要的是您似乎误解了AJAX的工作原理

var json = new XMLHttpRequest();
json.open('GET', "http://localhost:8081/getPersons?format=json", true);
json.send();

// It's better to declare event handlers this way,
// your version relied on variable hoisting (look it up),
// which is not usually recommended.
json.onreadystatechange = function(e) {
    if (json.readyState == 4 && json.status == 200) {
        var response = JSON.parse(json.responseText);

        // This was the main problem:
        // Processing the result of the XHR should be *inside* the
        // readystate (or load) event handler
        for (var i = 0; i < response.length; i++) {
            // You forgot to put the property name "gender" in quotes
            // as well as the value "male"
            // Also, the double check was unnecessary. This is perfectly safe.
            if(response[i]['gender'] === 'male') {
                var img = document.createElement("img");
                img.src = "http://advertdemo.ga/adverts/emotion_neutral/male/young/iphone.jpg";
                // You should set dimensions on the style property,
                // not img directly
                img.style.width = "300px";
                img.style.height = "300px";

               document.body.appendChild(img);
               break;
            }
        }
    }
}
var json=new-XMLHttpRequest();
open('GET','http://localhost:8081/getPersons?format=json“,对);
json.send();
//最好这样声明事件处理程序,
//您的版本依赖于变量提升(查找),
//这通常是不推荐的。
json.onreadystatechange=函数(e){
if(json.readyState==4&&json.status==200){
var response=JSON.parse(JSON.responseText);
//这是主要问题:
//处理XHR的结果应该在
//readystate(或load)事件处理程序
对于(变量i=0;i
您有多个问题,首先您在顶部声明一个变量
i
,然后为循环声明一个
i
变量,它们将相互干扰。接下来您将
i
设置为
20
,而while循环的条件是在
i
小于10时运行,但情况并非如此,while循环将永远不会运行r run.you忘了将document.createElement(“img”)分配给img变量。@PatrickEvans,我自己刚注意到。谢谢you@BugHunter我刚刚完成了
img=document.createElement(“img”)
但同样的问题仍然存在。非常感谢您纠正了这个问题,可能是重复的-我以前没有使用过AJAX。它仍然不起作用,您知道为什么吗?可能有很多原因-这就是您开始调试的地方。打开浏览器的开发工具,检查控制台选项卡中的错误消息和网络选项卡确保您的AJAX请求被发送到服务器并收到响应。您还可以在代码中使用
console.log()
从您自己的代码向控制台写入数据和消息,以确保您的代码正在执行,并且变量包含它们应该包含的数据。感谢您的建议。我这样做了,但我不认为if语句(response of gender=male)正在得到满足,因为将
console.log()
放在它外面是有效的,但放在里面不是。我确信JSON中有一个名为“gender”的键和值“male”。JSON HTTP地址也是正确的。请尝试
console.log(response)
在解析AJAX结果以查看您的代码看到的内容后。我已经做了一些测试,并发现了问题的根源。出于某种原因,该代码不适用于本地主机地址。我知道,因为我用ipinfo.io/json测试了它,它起了作用。我正在使用Chrome运行代码,并使用
--禁用web安全性
旗帜,但它仍然不起作用。你有什么建议吗?