Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.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
将JSON文件转换为Javascript对象_Javascript_Html_Json_Ajax - Fatal编程技术网

将JSON文件转换为Javascript对象

将JSON文件转换为Javascript对象,javascript,html,json,ajax,Javascript,Html,Json,Ajax,我正在尝试将这个json文件转换为javascript对象,然后以表格格式显示它(现在不必担心表格的外观,一旦解决了这个问题,我会解决这个问题。)我看不出我做错了什么,无法检索json对象,因为程序运行时,它们会在控制台中打印出来。对statechangehandler的两次回调出现语法错误,但是在接下来的两次回调中,json对象被打印出来,不太清楚原因。任何帮助都将不胜感激,提前谢谢 问题2.html: 问题2 函数makeAjaxQueryVideo(){ var xhttp=newXM

我正在尝试将这个json文件转换为javascript对象,然后以表格格式显示它(现在不必担心表格的外观,一旦解决了这个问题,我会解决这个问题。)我看不出我做错了什么,无法检索json对象,因为程序运行时,它们会在控制台中打印出来。对statechangehandler的两次回调出现语法错误,但是在接下来的两次回调中,json对象被打印出来,不太清楚原因。任何帮助都将不胜感激,提前谢谢

问题2.html:


问题2
函数makeAjaxQueryVideo(){
var xhttp=newXMLHttpRequest();
xhttp.onreadystatechange=函数(){
readyStateChangeHandler(xhttp);
};
open(“GET”,“Question2.json”,true);
xhttp.send();
}
函数readyStateChangeHandler(xhttp){
log(“执行回调函数readyStateChangeHandler”);
console.log(“readyState=“+xhttp.readyState”);
console.log(“status=“+xhttp.status”);
log(“responseText:”);
console.log(xhttp.responseText);
手持状态成功(xhttp);
}
功能手柄状态故障(xhttp){
var displayDiv=document.getElementById(“显示”);
displayDiv.innerHTML=“XMLHttpRequest失败:状态”+xhttp.status;
}
函数handleStatusSuccess(xhttp){
var jsonText=xhttp.responseText;
var videoObj=JSON.parse(jsonText);
控制台日志(videoObj);
控制台日志(“标题为”+videoObj.title);
显示视频(videoObj);
}
功能显示视频(videoObj){
var html=“股票市场活动”+videoObj.queryTime+”;
html+=“”;
html+=“StockValueChangeNet/%”;
for(变量i=0;i
对statechangehandler的两次回调出现语法错误,但是在接下来的两次回调中,json对象被打印出来,不太清楚原因

每次状态更改时调用
handleStatusSuccess
,甚至在它达到成功状态之前

您可能应该改用
load
事件处理程序

function makeAjaxQueryVideo() {
    var xhttp = new XMLHttpRequest();
    xhttp.addEventListener("load", handler)
    xhttp.open("GET", "Question2.json");
    xhttp.send();
}

function handler() {
    console.log("Callback function readyStateChangeHandler is executed");
    console.log("readyState = " + this.readyState);
    console.log("status = " + this.status);
    console.log("responseText:");
    console.log(this.responseText);
    handleStatusSuccess(this);
}

我这样做是因为我总是得到状态代码“0”,但是如果我绕过状态代码检查200,其他程序仍然可以完全正常工作。我决定取消对“200”状态代码的检查,这样程序就可以继续运行了。你的序列化失败了吗?或者您无法访问objVideo.title?因为如果json看起来有效,那么videoObj只有一个属性:videoObj.result;您的视频位于videoObj.result.video[]中。但videoObj不存在。每当我尝试访问这些值时,它们都会打印为未定义。Donno,但是我试过使用json,你的html除了在displayVideo函数中通过videoObj.result.video更改videoObj.result.video之外,它工作得很好(当然,当Cors问题得到解决时),所以你得到了表输出?当然是的。一旦解决了CORS策略(我想您可以通过开发控制台控制它),就在函数中更改了videoObj.result的两个引用,我得到了表。