n.parseJSON @ jquery-1.12.3.min.js:4
showTable @ query.html:107
success @ query.html:98
i @ jquery-1.12.3.min.js:2
fireWith @ jquery-1.12.3.min.js:2
y @ jquery-1.12.3.min.js:4
c @ jquery-1.12.3.min.js:4
以上是代码的错误信息。
我想将JSON对象解析为数组,并将数组呈现为HTML。但我不知道如何通过以下方式处理它?</ p>
以下是我的部分js代码,showTable(data)函数将json对象解析为html table.function requestData()是后面的请求信息。
(function(){
var form = $("form");
var contentCenter = $(".content-center");
$(".s-btn").on("click",function(event){
$(".container").css({
"position":"relative"
})
form.css({
"position":"absolute",
"left":"15px",
"top":"0px"
});
contentCenter.css({
"position":"absolute",
"top":"-12px"
})
event.preventDefault();
requestData();
});
//与后台交互数据
function requestData(){
var data = {
type : $("#form_control").val(),
keywords : $.trim($("#ipt_control").val())
};
$.ajax({
type : "GET",
url : "data/data.json",
dataType : "json",
data : data,
success:function(msg){
//TODO请求成功后跳转页面
//处理后台返回的数据
console.log(msg);
showTable(msg);
},
error:function(msg){
console.log("failed");
}
});
}
//获取json数据,动态创建表格
function showTable(data){
var dataArray = $.parseJSON(data);
console.log(dataArray);
var tableStr="<table class='table table-bordered'>"
tableStr = tableStr + "<thead><td>id</td><td>name</td>handle<td></td>"
var len = dataArray.length;
for(var i=0;i<len;i++){
tableStr = tableStr + "<tr><td>" + dataArray[i].id + "</td>" + "<td>" + dataArray[i].name + "</td>" + "<td>" + dataArray[i].handle + "</td></tr>";
}
tableStr = tableStr + "</table>"
$("#dataType").html(tableStr);
}
})();
答案 0 :(得分:8)
我有同样的问题,如果您的响应标头是application / json,它已经被解析,您不需要用以下方法解析它:
var dataArray = $.parseJSON(data);
另外,您可以使用jQuery.getJSON()
:jQuery.getJSON()
答案 1 :(得分:2)
在你的ajax请求中,你应该将dataType指定为&#34; html&#34;。其中:数据是由php json_encode()函数生成的。
$.ajax({
type : "GET",
url : "data/data.json",
dataType : "html",
data : data,
success:function(msg){
console.log(msg);
var array_return = $.parseJSON ( msg );
},
error:function(msg){
console.log("failed");
}
});
答案 2 :(得分:-1)
因此,这是javascript或唯一的v8的技巧。
JSON.parse函数,主要用于jquery的$ .parseJSON(data)中。始终假定以'引号开头的字符串。
因此,如果您的数据如下所示
let data = '{"hello": "world"}'; //success
let data = "{'hello': 'world'}"; //fail
使用单引号将按预期方式工作,否则将失败并显示Unexpected token o in JSON at position 1?
希望有帮助:)