JSON ve jQuery yineleme ile sorun

4 Cevap php

Ben bu yere bariz bir hata olduğuna eminim - ama bana donig ettiğimi anlatalım:

Aşağıdaki gibi jQuery ile bir PHP dosyası arıyorum:

$.getJSON("/phpincs/getbucket.php?awskey="+awskey+"&awssecret="+awssecret+"&bucket="+bucket,
    function(json){
    	$.each(json,function(i,item){
    	$(new Option(item.name,item.name)).appendTo('#bucket_contents_0');
    	});
    }

aşağıdaki gibi döndürür JSON dosyası:

Array
(
    [bt_shop.png] => Array
        (
            [name] => bt_shop.png
            [time] => 1260393948
            [size] => 156985
            [hash] => 8a4eba621d5e08b84c962a0ad21ec2ae
        )

    [me_profile.jpg] => Array
        (
            [name] => me_profile.jpg
            [time] => 1260393952
            [size] => 2714
            [hash] => 4f5d185b0c671e6165902762681f098b
        )

    [thumbnail.aspx.jpeg] => Array
        (
            [name] => thumbnail.aspx.jpeg
            [time] => 1260393951
            [size] => 5268
            [hash] => 6939efa58ff7ffcac17218ffdd0d5d8c
        )

)
true

nedense o function (json) {} ateş görünmüyor - I ('') bir uyarı sıkışmış ettik; ve o hiçbir şey yapmaz.

Birisi hızla ters gidiyor gibi görünüyor ne bana açıklayabilir misiniz?

Alkış,

Carl

4 Cevap

Bu ne dönen json gibi görünmüyor, çünkü büyük olasılıkla geri çağırma işlevini çağırarak değil, daha fazladır. Eğer dizi ... çağrısını içeren tanımlanmış bir $ değişken varsa

echo json_encode($jsondata); exit;

Senaryonun sonunda.

Ben önceki etiket olarak iç dizilerin isimleri nokta ile sorunlara neden olacak değiştirdik. Sen bir hata gibi alırsınız:

myArray.bt_shop is undefined

Aradığınızda çalıştığınızda

alert(myArray.bt_shop.png.name);

Bu denilebilir tek yolu ile

alert(myArray["bt_shop.png"].name);

Yani kod biraz değişmiş olan, bu dizilerin JSON versiyonu ...

{
    "one":
    {
        "name": "bt_shop.png",
        "time": "1260393948",
        "size": "156985",
        "hash": "8a4eba621d5e08b84c962a0ad21ec2ae"
    },

    "two":
    {
        "name": "me_profile.jpg",
        "time": "1260393952",
        "size": "2714",
        "hash": "4f5d185b0c671e6165902762681f098b"
    },

    "three":
    {
        "name": "thumbnail.aspx.jpeg",
        "time": "1260393951",
        "size": "5268",
        "hash": "6939efa58ff7ffcac17218ffdd0d5d8c"
    }
}

Eğer nesne varsa o zaman bu gibi alanlara başvurmak:

myArray["two"]["name"]
myArray["two"].name
myArray.two.name

Sizin iade dosyası JSON değildir. Bizim için JSON nesnesi tanımlamak için PHP sözdizimi kullandığınız sürece, sen json_encode kullanarak JSON biçiminde kodlamak gerekir.

Eğer JSON dosyası JSON değildir diyoruz. Ya da belki dönüştüren bazı PHP kütüphane kullanımı anlamına JSON garip formatı?