Я пытаюсь проанализировать данные, возвращенные из $.post()
.
[{"id":"1","text":"USD"},
{"id":"2","text":"CNY"},
{"id":"3","text":"PHP"},
{"id":"4","text":"AUD"},
{"id":"5","text":"SGD"},
{"id":"6","text":"JPY"}]
используя этот подход JQuery, зацикливая на json-массив
Я сделал что-то вроде этого:
$.post(
base_url+'cgame/currency',
{ gameID: gameID },
function(data) {
$(this).html();
$.each(data,function(idx, obj) {
$(obj).each(function(key, value) {
console.log(key + ": " + value);
});
});
}
);
но это дает мне ошибку:
Uncaught TypeError: не может использовать оператор 'in' для поиска '120' в
[{"id":"2","text":"CNY"},{"id":"3","text":"PHP"},{"id":"4","text":"AUD"},{"id":"5","text":"SGD"},{"id":"6","text":"JPY"}]
Я также пробовал:
$.post(
base_url+'cgame/currency',
{ gameID: gameID },
function(data) {
$(this).html();
$(data).each(function(idx, obj) {
$(obj).each(function(key, value) {
console.log(key + ": " + value);
});
});
}
);
но это также дает мне ошибку:
Uncaught Error: Синтаксическая ошибка, непризнанное выражение:
[{"id":"1","text":"USD"},{"id":"6","text":"JPY"}]
Как я должен это делать?
function(data) {
var value = JSON.parse(data);
$.each(value ,function(idx, obj) {
console.log("id : "+obj.id+" "+text:"+obj.text);
});
}
Ваши данные поступают в виде массива, поэтому вам нужно прокручивать каждый индекс, а затем извлекать значения. Таким образом, вы можете заменить это:
$(obj).each(function(key, value) {
console.log(key + ": " + value);
});
с :-
$.each( obj, function( key) {
console.log( obj[key].id + ':' + obj[key].text);
});
или вы можете сделать это: -
$.each( obj, function( key, value ) {
console.log( value.id + ':' + value.text);
});
key - это индекс массива. Он вернет 0,1,2..
Я думаю, что аргумент, переданный вашей функции обратного вызова, имеет тип string. Измените его на:
function(data) {
var parsedData = JSON.parse(data);
$(this).html();
$.each(parsedData ,function(idx, obj) {
$(obj).each(function(key, value) {
console.log(key + ": " + value);
});
});
}
попробуй это
$.post(base_url+'cgame/currency',{ gameID: gameID },
function(data) {
$(this).html(); //<-- becareful $(this) might not be the element you think it is
$.each(data,function(idx, obj) {
console.log( "id : " + obj.id);
console.log( "text: " + obj.text);
});
},'JSON');