Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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_Eval - Fatal编程技术网

为什么JavaScript不显示已解析的json数据?

为什么JavaScript不显示已解析的json数据?,javascript,json,eval,Javascript,Json,Eval,这是JSON数据的格式:[{“options”:“smart_exp”},{“options”:“user_int”},{“options”:“blahblah”}],我通过getjson从服务器接收这些数据。我需要用用户输入附加json。我尝试这样做:首先将其转换为javascript对象,将其附加用户输入,再次转换为json对象并将其发送回服务器进行数据库更新。我已经使用eval()将json转换为javaScript对象。现在无法操作javascript对象。若我将javascript对象

这是JSON数据的格式:[{“options”:“smart_exp”},{“options”:“user_int”},{“options”:“blahblah”}],我通过getjson从服务器接收这些数据。我需要用用户输入附加json。我尝试这样做:首先将其转换为javascript对象,将其附加用户输入,再次转换为json对象并将其发送回服务器进行数据库更新。我已经使用eval()将json转换为javaScript对象。现在无法操作javascript对象。若我将javascript对象转换回json对象,它将正确显示从服务器发送的所有数据

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
 "http://www.w3.org/TR/html4/strict.dtd">
 <html><head></head>
 <body> 
 <form name="index">
 <p><input type = "text" id = "txt" name = "txt"></input></p>
 <p><input type = "button" id = "send" name = "send" value = "send" 
 onClick="ADDLISTITEM();"></input></p>
 <select name="user_spec" id="user_spec" />
 </form>
 <script>
 function ADDLISTITEM()
 {// this script suffers from errors on eval/JSON.parse methods
 alert (json.length);//outputs corrcet with eval 
 tring = JSON.stringify(json);//outputs corrcet with eval
 alert(jsonString);//outputs corrcet with eval
 alert(json.options[0]);//no output
 }
 </script>
 <script src="http://code.jquery.com/jquery-latest.min.js">    
 </script>
 <script src="http://www.json.org/json2.js"></script>
 <script>
 var json;
 $(document).ready(function() { 
 jQuery .getJSON("http://127.0.0.1/conn_mysql.php", function (jsonData) {
 json = eval(jsonData);
 //json = JSON.parse(jsonData);/*error if uncomment:"IMPORTANT: Remove this line from  
                               json2.js before deployment"*/
 $.each(jsonData, function (i, j) {
 document.index.user_spec.options[i] = new Option(j.options);
 });});
 });
 </script>
 </body>
 </html>

函数ADDLISTITEM() {//此脚本在eval/JSON.parse方法上出现错误 警报(json.length);//使用eval输出correct stringify(JSON);//使用eval输出correct 警报(jsonString);//输出与eval一致 警报(json.options[0]);//无输出 } var-json; $(文档).ready(函数(){ jQuery.getJSON(“http://127.0.0.1/conn_mysql.php,函数(jsonData){ json=eval(jsonData); //json=json.parse(jsonData);/*取消注释时出错:“重要:从 部署前的json2.js“*/ $.each(jsonData,function(i,j){ document.index.user_spec.options[i]=新选项(j.options); });}); });
var json=[{“选项”:“智能”},{“选项”:“用户”},{“选项”:“blahblah”}]
for(var i=0;i
var json=[{“选项”:“智能”},{“选项”:“用户”},{“选项”:“blahblah”}]
for(var i=0;i
在jQuery中,使用解析的JSON数据调用$.getJSON()的回调函数;就用它吧

$.getJSON("*.php", function(data) {
   $.each(data, function() { alert(this.options); });
);
应该为数组中的每个{“options”:“xyzy”}对象发出警报

编辑OP编辑他们的帖子后: 您的编辑稍微澄清了一点:如果您违反了

基本上(除了例外(飞行前检查等),您只能通过AJAX访问完全相同域上的URL。如果您的HTML文件是本地提供的静态文件,则无法访问;如果您的文件是,您不能简单地将AJAX转换为。

在jQuery中,将使用解析的JSON数据调用$.getJSON()的回调;就用它吧

$.getJSON("*.php", function(data) {
   $.each(data, function() { alert(this.options); });
);
应该为数组中的每个{“options”:“xyzy”}对象发出警报

编辑OP编辑他们的帖子后: 您的编辑稍微澄清了一点:如果您违反了


基本上(除了例外(飞行前检查等),您只能通过AJAX访问完全相同域上的URL。如果您的HTML文件是本地提供的静态文件,则无法访问;如果您的文件是,您不能简单地将AJAX插入。

我认为这里的问题与eval/parse等或同源策略无关。json是一个对象数组,每个对象包含一个名为options的成员。因此,您不能执行
json。选项[0]
,您必须执行
json[0]。选项

我认为这里的问题与eval/parse等或同源策略无关。json是一个对象数组,每个对象包含一个名为options的成员。因此,您不能执行
json。选项[0]
,您必须执行
json[0]。选项

您的HTML代码有点崩溃……不要使用eval()解析json。使用JSON.parse(),并包含此文件以实现旧浏览器兼容性:除了Golmote的建议:1。使用doctype,2。脚本元素上不需要语言和类型属性,3。考虑使用大写函数名仅用于构造函数4的约定。在声明使用这些变量的全局函数之前,请考虑声明全局变量5。使用小写标记名6。考虑将脚本元素放置在页面底部(右前),如果我使用JSON.PARSE(JSONDATA),脚本将停止工作。i、 e.未填充dropdwon列表&json.length也未显示任何结果。它显示此警报,“重要提示:在部署之前从json2.js中删除此行”如果我删除包含,警告消息将消失。它可以工作,即使用eval()执行json.length,但json.pase()会停止工作,甚至会填充列表。我编辑了代码以了解如何使用JSON.parse您的HTML代码有点崩溃……不要使用eval()解析JSON。使用JSON.parse(),并包含此文件以实现旧浏览器兼容性:除了Golmote的建议:1。使用doctype,2。脚本元素上不需要语言和类型属性,3。考虑使用大写函数名仅用于构造函数4的约定。在声明使用这些变量的全局函数之前,请考虑声明全局变量5。使用小写标记名6。考虑将脚本元素放置在页面底部(右前),如果我使用JSON.PARSE(JSONDATA),脚本将停止工作。i、 e.未填充dropdwon列表&json.length也未显示任何结果。它显示此警报,“重要提示:在部署之前从json2.js中删除此行”如果我删除包含,警告消息将消失。它可以工作,即使用eval()执行json.length,但json.pase()会停止工作,甚至会填充列表。我编辑了代码以了解如何使用JSON.parse。实际上,我需要使用此脚本将JSON数据(从服务器接收并构建一个下拉列表)与用户输入一起追加,然后将其发送回服务器以保存并发送一组新的更新JSON以进行渲染。通过回声/警报,我试图看到我接收到数据并对其进行操作。我编辑了代码。对我的答案进行了澄清。你能告诉我在这场冲突中的解决方案吗。但是正如我上面所说的,这个列表由服务器数据填充&eval还将json解析为javascript