eval函数是一种动态生成代码的强大而简单的方法,那么有什么警告呢?
我正在尝试学习一些html/css/javascript,所以我自己写了一个教学项目.
我们的想法是在json文件中包含一些词汇表,然后将其加载到表中.我设法加载文件并打印出其中一个值,之后我开始编写代码将值加载到表中.
在这之后我开始收到错误,所以我删除了我写的所有代码,只剩下一行(以前工作过的同一行)......只有错误仍然存在.
错误如下:
Uncaught SyntaxError: Unexpected token o
(anonymous function)script.js:10
jQuery.Callbacks.firejquery-1.7.js:1064
jQuery.Callbacks.self.fireWithjquery-1.7.js:1182
donejquery-1.7.js:7454
jQuery.ajaxTransport.send.callback
Run Code Online (Sandbox Code Playgroud)
我的javascript代码包含在一个单独的文件中,就是这样:
function loadPageIntoDiv(){
document.getElementById("wokabWeeks").style.display = "block";
}
function loadWokab(){
//also tried getJSON which threw the same error
jQuery.get('wokab.json', function(data) {
var glacier = JSON.parse(data);
});
}
Run Code Online (Sandbox Code Playgroud)
我的JSON文件现在只有以下内容:
[
{
"english": "bag",
"kana": "kaban",
"kanji": "K"
},
{
"english": "glasses",
"kana": "megane",
"kanji": "M"
}
]
Run Code Online (Sandbox Code Playgroud)
现在错误报告在第11行,即var glacier = JSON.parse(data);行.
当我删除json文件时,我收到错误:"GET http://.../wokab.json 404(Not Found)"所以我知道它正在加载它(或者至少尝试).
如何使用JavaScript(或jQuery)将描述对象的字符串转换为JSON字符串?
例如:转换它(不是有效的JSON字符串):
var str = "{ hello: 'world', places: ['Africa', 'America', 'Asia', 'Australia'] }"
Run Code Online (Sandbox Code Playgroud)
进入这个:
str = '{ "hello": "world", "places": ["Africa", "America", "Asia", "Australia"] }'
Run Code Online (Sandbox Code Playgroud)
我希望eval()尽可能避免使用.
我使用控制器中的类型类解析了一些数据我得到的数据如下:
{
"data":{
"userList":[
{
"id":1,
"name":"soni"
}
]
},
"status":200,
"config":{
"method":"POST",
"transformRequest":[
null
],
"transformResponse":[
null
],
"url":"/home/main/module/userlist",
"headers":{
"rt":"ajax",
"Tenant":"Id:null",
"Access-Handler":"Authorization:null",
"Accept":"application/json, text/plain, */*"
}
},
"statusText":"OK"
}
Run Code Online (Sandbox Code Playgroud)
我试着像这样存储数据
var userData = _data;
var newData = JSON.parse(userData).data.userList;
Run Code Online (Sandbox Code Playgroud)
如何将用户列表提取到新变量?
我遇到了从Web服务返回的JSON的问题.看起来JSON缺少引号,但是当我向JSON添加引号时,我收到错误.以下是错误消息:'Uncaught SyntaxError:Unexpected token o.当我将字符串记录到控制台时:[object Object],[object Object]
以下是一些模拟错误的示例代码:
//Error I am trying to solve
var jsonString = '[{"Id":"10","Name":"Matt"},{"Id":"1","Name":"Rock"}]';
var myData = JSON.parse(jsonString);
$(document).ready(function() {
var $grouplist = $('#groups');
$.each(myData, function() {
$('<li>' + this.Name + '</li>').appendTo($grouplist);
});
});
Run Code Online (Sandbox Code Playgroud)
这是与字符串周围的单引号相同的代码.有用
//Successful Javascript
var jsonString = '[{"Id":"10","Name":"Matt"},{"Id":"1","Name":"Rock"}]';
var myData = JSON.parse(jsonString);
$(document).ready(function() {
var $grouplist = $('#groups');
$.each(myData, function() {
$('<li>' + this.Name + '</li>').appendTo($grouplist);
});
});
//Successful HTML
<ul id="groups"></ul>
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在字符串中添加引号时,就像我似乎需要在我的实际代码中一样,它失败了:
//Does not work when I need to append quotes to the …Run Code Online (Sandbox Code Playgroud) 我有这个JSON:
var data = [{
"ID":1,"Name":"Test",
"subitem": [
{"idenID":1,"Code":"254630"},
{"idenID":2,"Code":"4566"},
{"idenID":3,"Code":"4566"}
]
}];
console.log(JSON.parse(data)); //Uncaught SyntaxError: Unexpected token o
Run Code Online (Sandbox Code Playgroud)
如何反序列化为datajavascript对象.