Javascript 如何从json文件中获取每个值
我尝试用json文件将数据发送到datatable,如下所示: 我的json文件的示例数据:Javascript 如何从json文件中获取每个值,javascript,json,datatables,cakephp-2.6,Javascript,Json,Datatables,Cakephp 2.6,我尝试用json文件将数据发送到datatable,如下所示: 我的json文件的示例数据: "responseHeader":{ "status":0, "QTime":2, "params":{ "q":"vba", "indent":"true", "fl":"name,role_t,born,natio_t", "wt":"json"}}, "response":{"numFound":7,"start":0,"
"responseHeader":{
"status":0,
"QTime":2,
"params":{
"q":"vba",
"indent":"true",
"fl":"name,role_t,born,natio_t",
"wt":"json"}},
"response":{"numFound":7,"start":0,"docs":[
{
"name":"Khouli",
"born":["1978-04-03T00:00:00Z"],
"natio_t":"tunisien",
"role_t":"Consultant"},
{
"name":"Atayi",
"born":["1987-06-24T00:00:00Z"],
"natio_t":"Francaise",
"role_t":"Consultant"}
}
这就是我的职责:
$ ( document ).ready(function() {
$.ajax({
type: 'GET',
url: '../search.json',
success: function(data) {
$.each(data, function(i, data) {
var body = "<tr>";
body += "<td>" + data.name + "</td>";
body += "<td>" + data.born + "</td>";
body += "<td>" + data.natio_t + "</td>";
body += "<td>" + data.role_t + "</td>";
body += "</tr>";
$('.datatable-ajax-source table').append(body);
});
$(文档).ready(函数(){
$.ajax({
键入:“GET”,
url:“../search.json”,
成功:功能(数据){
$。每个(数据,函数(i,数据){
var body=“”;
正文+=“”+data.name+“”;
正文+=“”+data.born+“”;
正文+=“”+data.natio_t+“”;
正文+=“”+data.role\u t+“”;
正文+=”;
$('.datatable ajax source table').append(body);
});
但我得到了一张价值不确定的桌子
如何从json文件中获取此值您没有告诉jquery您希望返回json,因此它接受来自服务器响应的json字符串作为纯文本,并将其作为纯文本传递到
数据中
使用.getJSON()
,这将自动将响应解析为本地JS数据结构,或者
$.ajax(
...
dataType: "json"
...
);
您的输入数据似乎有误:此处已更正数据:
{
"responseHeader":{
"status":0,
"QTime":2,
"params":{
"q":"vba",
"indent":"true",
"fl":"name,role_t,born,natio_t",
"wt":"json"}},
"response":{"numFound":7,"start":0,"docs":[
{
"name":"Khouli",
"born":["1978-04-03T00:00:00Z"],
"natio_t":"tunisien",
"role_t":"Consultant"},
{
"name":"Atayi",
"born":["1987-06-24T00:00:00Z"],
"natio_t":"Francaise",
"role_t":"Consultant"}
]
}
}
处理此问题的正确方法是:
$(document).ready(function() {
$.ajax({
type: 'GET',
url: '../search.json',
success: function(data) {
// Data is the root node of your json response.
// You need to navigate through the "docs" node.
if(data.response.docs && data.response.docs.length > 0)
{
$.each(data.response.docs, function(i, item) {
var body = "<tr>";
body += "<td>" + item.name + "</td>";
body += "<td>" + item.born + "</td>";
body += "<td>" + item.natio_t + "</td>";
body += "<td>" + item.role_t + "</td>";
body += "</tr>";
$('.datatable-ajax-source table').append(body);
}
});
$(文档).ready(函数(){
$.ajax({
键入:“GET”,
url:“../search.json”,
成功:功能(数据){
//数据是json响应的根节点。
//您需要在“文档”节点中导航。
if(data.response.docs&&data.response.docs.length>0)
{
$.each(data.response.docs,函数(i,项){
var body=“”;
正文+=“”+item.name+“”;
正文+=“”+item.born+“”;
正文+=“”+item.natio\u t+“”;
正文+=“”+item.role\u t+“”;
正文+=”;
$('.datatable ajax source table').append(body);
}
});
您没有为数据
获取正确的值。
您应该获得docs.data[i]
,在本例中,它是项
,如中定义的.each()
您的JSON数据以不同方式无效。请发布有效的JSON。显然,数据
不是数组。我无法理解您为什么将其视为数组。诚然,这可能是问题的一部分,但如果服务器正确设置内容类型
头,jQuery应该对其进行解析。从我所知,无论哪种方式,他都需要进行解析深入到结构中,这目前是无效的。谢谢@didiraupest您的回答,但当我尝试此解决方案时,我在jquery.min.js:4未捕获类型错误:无法读取Undeinedeach@jquery.min.js:4success@application.js:111c@jquery.min.js:4fireWith@jquery.min.js:4k@jquery.min.js:6的属性“长度”r@jquery.min.js:6应用程序仍然存在相同的错误。js:116未捕获类型错误:无法读取此对齐中未定义的属性“length”(data.response.docs&&data.docs.length>0)我修复了它谢谢你的帮助:我只是激发了你的灵感或你的建议,我用data.response.docs替换了data.docs,它现在可以工作了。我忘了在任何地方应用这些更改!