我最近发布了另一个问题,直接用户指出了我正确的方向。
$.ajax({
type: 'POST', url: './', data: 'token=' + token + '&re=8', cache: false, timeout: 5000,
success: function(html){
auth(html);
var JSON_array = eval(html);
alert(JSON_array[0].username);
}
});
这会正确返回数据,但我想执行一种'foreach'。该数组包含有关多个传入和传出即时消息的数据。因此,如果用户一次与多个人交谈,我需要循环。数组的结构如下。
Array
(
[0] => Array
(
[username] => Emmalene
[contents] =>
<ul><li class="name">ACTwebDesigns</li><li class="speech">helllllllo</li></ul>
<ul><li class="name">ACTwebDesigns</li><li class="speech">sds</li></ul>
<ul><li class="name">ACTwebDesigns</li><li class="speech">Sponge</li><li class="speech">dick</li></ul>
<ul><li class="name">ACTwebDesigns</li><li class="speech">arghh</li></ul>
)
)
非常感谢任何帮助。
答案 0 :(得分:5)
好了,因为你已经使用了jQuery,你可以使用each函数:
$.ajax({
type: 'POST', url: './', data: 'token=' + token + '&re=8', cache: false, timeout: 5000,
success: function(html){
auth(html);
var JSON_array = eval(html);
$.each(JSON_array, function(index, data) {
$('someelement').append(data.contents);
});
}
});
答案 1 :(得分:2)
您可以将JSON指定为返回类型...
,而不是评估HTML使用$.each
:
$.ajax({
type: "POST",
data: ...,
url: url,
dataType: "json",
success: function(data) {
$.each(data, function(i, item){
// do something with every item in data
// you can reference items in data via
// data.fieldName
});
}
});
但for ... in
循环并不难:
$.ajax({
...,
dataType: "json",
success: function(data) {
var fields = data.fieldName;
var value;
for (value in fields) {
// do something with value
}
}
});
答案 2 :(得分:1)
只是为了澄清,因为我已经阅读了许多有用的提示和答案,只有这个对我有用:
$.ajax({
type: 'POST', url: './', data: 'token=' + token + '&re=8', cache: false, timeout: 5000, datatype: 'json',
success: function(html){
auth(html);
var JSON_array = eval(html);
$.each(JSON_array, function(index, data) {
var talk_to = JSON_array.username;
var contents_to_update = JSON_array.contents;
});
}
});
这使得工作:
1)使用eval。 2)数据类型:'json' 3)使用jquery的$ .each函数