Результаты PHP json_encode и jQuery - PullRequest
       6

Результаты PHP json_encode и jQuery

0 голосов
/ 07 января 2010

Я пытаюсь вывести кодированную строку jSON из моей базы данных и перебрать элементы, но у меня возникли некоторые трудности Вот строка в базе данных:

["volunteers","seat_dedication_program","memberships"]

А вот и код:

//Looks for _checkbox when looping through my database fields (object dbVals) and turns it into a true jQuery array if it finds it.
if( key.search(/_checkbox/i) > 0 ) var arr = $.makeArray(dbVals[key]);

//If it is an array, loop through the array values and show them
if($.isArray(arr)==true){
    $.each(arr, function(i, n){
        alert(i + " : " + n);
    });
}

То, что я хочу, это:

//alert
0 : volunteers
//alert
1 : seat_dedication_program etc...

Что я получаю, это:

//alert
0 : ["volunteers","seat_dedication_program","memberships"]

Я думаю, что я включил все соответствующие данные. Может кто-нибудь помочь мне понять, почему это происходит?

Спасибо.

Ответы [ 2 ]

1 голос
/ 07 января 2010

Использование $ .makeArray (..) дает вам массив, в котором единственным элементом является строка, которую вы ему дали. Вам нужно проанализировать строку в объект JavaScript. Используйте JSON2.js библиотеку для анализа, тогда ваш код будет выглядеть примерно так:

var arr = JSON.parse(dbVals[key]);

if($.isArray(arr)==true){
    $.each(arr, function(i, n){
        alert(i + " : " + n);
    });
}
0 голосов
/ 07 января 2010

Просто используйте обычный цикл for:

for (var i=0; i<arr.length; i++) {
    var n = arr[i];
    alert(i + " : " + n);
}

или для больших массивов, слегка оптимизированный:

for (var i=0,l=arr.length; i<l; i++) {
    var n = arr[i];
    alert(i + " : " + n);
}

или, если вы действительно ненавидите петли:

Array.prototype.each = function (callback) {
    for (var index=0,l=this.length;index<l;index++) {
        var item = this[index];

        // index is second arg since it's optional
        callback(item,index);
    }
}

arr.each(function(n,i){
    alert(i + " : " + n);
});

но я бы порекомендовал цикл for, чтобы избежать конфликтов с модификациями библиотек или когда Firefox внезапно решит реализовать свой собственный метод each для массивов (некоторые библиотеки уже укушены этим).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...