我有一个AJAX调用,返回一些像这样的JSON:
$(document).ready(function () {
$.ajax({
type: 'GET',
url: 'http://example/functions.php',
data: { get_param: 'value' },
success: function (data) {
var names = data
$('#cand').html(data);
}
});
});
在#cand
div内,我会得到:
[ { "id" : "1", "name" : "test1" },
{ "id" : "2", "name" : "test2" },
{ "id" : "3", "name" : "test3" },
{ "id" : "4", "name" : "test4" },
{ "id" : "5", "name" : "test5" } ]
如何遍历此数据并将每个名称放在div中?
答案 0 :(得分:262)
假设您的服务器端脚本没有设置正确的Content-Type: application/json
响应头,您需要使用dataType: 'json'
参数向jQuery指示这是JSON。
然后您可以使用$.each()
函数循环遍历数据:
$.ajax({
type: 'GET',
url: 'http://example/functions.php',
data: { get_param: 'value' },
dataType: 'json',
success: function (data) {
$.each(data, function(index, element) {
$('body').append($('<div>', {
text: element.name
}));
});
}
});
或使用$.getJSON
方法:
$.getJSON('/functions.php', { get_param: 'value' }, function(data) {
$.each(data, function(index, element) {
$('body').append($('<div>', {
text: element.name
}));
});
});
答案 1 :(得分:69)
设置dataType:'json'
将为您解析JSON:
$.ajax({
type: 'GET',
url: 'http://example/functions.php',
data: {get_param: 'value'},
dataType: 'json',
success: function (data) {
var names = data
$('#cand').html(data);
}
});
否则您可以使用parseJSON
:
var parsedJson = $.parseJSON(jsonToBeParsed);
然后你可以迭代以下内容:
var j ='[{"id":"1","name":"test1"},{"id":"2","name":"test2"},{"id":"3","name":"test3"},{"id":"4","name":"test4"},{"id":"5","name":"test5"}]';
...使用$().each
:
var json = $.parseJSON(j);
$(json).each(function (i, val) {
$.each(val, function (k, v) {
console.log(k + " : " + v);
});
});
答案 2 :(得分:21)
尝试以下代码,它适用于我的项目:
//start ajax request
$.ajax({
url: "data.json",
//force to handle it as text
dataType: "text",
success: function(data) {
//data downloaded so we call parseJSON function
//and pass downloaded data
var json = $.parseJSON(data);
//now json variable contains data in json format
//let's display a few items
for (var i=0;i<json.length;++i)
{
$('#results').append('<div class="name">'+json[i].name+'</>');
}
}
});
答案 3 :(得分:10)
$(document).ready(function () {
$.ajax({
type: 'GET',
url: '/functions.php',
data: { get_param: 'value' },
success: function (data) {
for (var i=0;i<data.length;++i)
{
$('#cand').append('<div class="name">data[i].name</>');
}
}
});
});
答案 4 :(得分:5)
使用该代码。
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "Your URL",
data: "{}",
dataType: "json",
success: function (data) {
alert(data);
},
error: function (result) {
alert("Error");
}
});
答案 5 :(得分:5)
好吧我有同样的问题,我通过从[]
删除[{"key":"value"}]
来解决这个问题:
- 在你的php文件中shure你打印像这样
醇>
echo json_encode(array_shift($your_variable));
- 在您的成功功能中执行此操作
醇>
success: function (data) {
var result = $.parseJSON(data);
('.yourclass').append(result['your_key1']);
('.yourclass').append(result['your_key2']);
..
}
如果你想要
,也可以循环播放答案 6 :(得分:4)
我同意上述所有解决方案,但要指出此问题的根本原因是,上述所有代码中的主要角色是以下代码行:
dataType:'json'
当您错过此行时(可选),将从服务器返回的数据视为全长字符串(这是默认返回类型)。添加此行代码将通知jQuery将可能的json字符串转换为json对象。
如果需要json数据对象,则任何jQuery ajax调用都应指定此行。
答案 7 :(得分:3)
var jsonP = "person" : [ { "id" : "1", "name" : "test1" },
{ "id" : "2", "name" : "test2" },
{ "id" : "3", "name" : "test3" },
{ "id" : "4", "name" : "test4" },
{ "id" : "5", "name" : "test5" } ];
var cand = document.getElementById("cand");
var json_arr = [];
$.each(jsonP.person,function(key,value){
json_arr.push(key+' . '+value.name + '<br>');
cand.innerHTML = json_arr;
});
<div id="cand">
</div>
答案 8 :(得分:2)
Json数据
data = {"clo":[{"fin":"auto"},{"fin":"robot"},{"fin":"fail"}]}
检索时
$.ajax({
//type
//url
//data
dataType:'json'
}).done(function( data ) {
var i = data.clo.length; while(i--){
$('#el').append('<p>'+data.clo[i].fin+'</>');
}
});
答案 9 :(得分:0)
$.ajax({
url: '//.xml',
dataType: 'xml',
success: onTrue,
error: function (err) {
console.error('Error: ', err);
}
});
$('a').each(function () {
$(this).click(function (e) {
var l = e.target.text;
//array.sort(sorteerOp(l));
//functionToAdaptHtml();
});
});
答案 10 :(得分:0)
这是在 JavaScript 中执行此操作的方法,这是一种非常有效的方法!
let data = "{ "name": "mark"}"
let object = JSON.parse(data);
console.log(object.name);
这将打印标记