PHP json_encode sonuçları ve jQuery

2 Cevap php

Ben öğeleri ile benim veritabanı ve döngü dışında bir json kodlanmış dize almaya çalışıyorum ama bazı zorluk yaşıyorum. İşte veritabanında dize var:

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

Ve burada kodu:

//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);
    });
}

İstediğim şudur:

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

Ne alıyorum şudur:

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

Ben bütün ilgili verileri de düşünüyorum. Herkes bu neden oluyor bana anlamaya yardımcı olabilir?

Teşekkürler.

2 Cevap

$. MakeArray (..) kullanarak size tek unsur bunu verdi dize bir dizi veriyor. Sen bir JavaScript nesnesine dizeyi ayrıştırmak gerekir. Ayrıştırmak için JSON2.js library kullanın sonra kod böyle bir şey olmazdı.

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

if($.isArray(arr)==true){
    $.each(arr, function(i, n){
        alert(i + " : " + n);
    });
}

Sadece döngü için düzenli kullanın:

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

veya büyük diziler için, biraz optimize:

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

ya da gerçekten döngüler için nefret eğer:

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);
});

ama ben tavsiye ederim kütüphane değişiklikler veya çatışan önlemek için döngü için Firefox aniden (bazı kütüphaneler zaten bu tarafından ısırıldı) diziler için kendi each yöntemi uygulamaya karar verdiğinizde.