2012-05-03 16 views
0

問題:配列は返されますが、jsonでは返されません。PHP - json_encode()のエラー

結果:配列で配列を返す必要があります。外側の配列には数字を持つキーがあり、値はキー "ID"と "名前"で配列されており、その値はデータベースから割り当てられます。

$i = 0; 
$json_values = array(); 
while($sctg = mysql_fetch_assoc($get_sctg)){ 
    $json_values[$i] = array("ID" => $sctg['ID'], "NAME" => $sctg['NAME']); 
    $i++; 
} 
echo json_encode($json_values); 
+3

あなたの問題は何ですか?コードは完璧に見えます。 – ThiefMaster

+0

問題:配列は返されますが、jsonでは返されません。 変数 "$ i"をキーとして取り出すと、jsonとして返されますが、 "$ i"をキーとして使用すると配列は返されますが、jsonでは返されません – aainaarz

+0

実際の出力と望ましい出力? – Niko

答えて

1

あなたのコードは完全に罰金ですJSONを返します - あなただけのJavaScriptで配列やオブジェクト間で異なるが誤解。

[{"ID":"4","NAME":"asdasd"}, 
{"ID":"3","NAME":"LOKS"}, 
{"ID":"1","NAME":"LOL"}] 

これは3つの要素を持つ配列を含むJSONです。各要素は、属性がIDおよびNAMEのオブジェクトです。

配列がdataに格納されているとします。

for(var i = 0; i < data.length; i++) { 
    var row = data[i]; 
    // Here you can use row.ID and row.NAME 
} 

私はあなたがこのように見えるためにあなたのJSONを期待推測:あなたは、簡単なforループとその配列内のオブジェクトを反復処理することができます

{ 
    0: {"ID":"4","NAME":"asdasd"}, 
    1: {"ID":"3","NAME":"LOKS"}, 
    2: {"ID":"1","NAME":"LOL"} 
} 

これは実際になり悪い JavaScript内のオブジェクトは(実際にはほとんどのブラウザに含まれていますが、保証されていません)のです。したがって、そのような要素の行を反復するとき(for(var key in data)を使用して)、キーがゼロであるためにID = 4の行を取得する必要はありません。

あなたが本当にオブジェクトの代わりに、何らかの理由で(そうしない!)の配列をしたい場合は、あなたは常にオブジェクトへの配列をキャストすることができます:サイドノートとして

echo json_encode((object)$json_values); 

を、通常、セキュリティ上の理由からJSONのトップレベル要素としてオブジェクトを用意することをお勧めします(配列コンストラクタを再定義して、スクリプトタグを持つ最上位の配列を含むものを作成し、通常は同じ原点で保護されたデータにアクセスできますXHRリクエストによってアクセスされた場合のポリシー)、このようにPHPコードを変更します。

echo json_encode(array('rows' => $json_values)); 
+0

申し訳ありませんが、私が作った大きな混乱のために - 私は必要なだけでなく私の問題についても説明しませんでした。新しい男.. :)とにかく - あなたのポストの後、私は私の実際の問題を実感しました - OBJECTS。 私は私の問題の解決策を見つけました! echo json_encode($ json_values、JSON_FORCE_OBJECT); – aainaarz

+1

本当に欲しいですか?行IDをキーとして使用しない限り、配列の代わりにオブジェクトを使用するのはあまり意味がありません! – ThiefMaster

0

$i++;を使用する必要はありません直接

while($sctg = mysql_fetch_assoc($get_sctg)){ 
    $json_values[] = array("ID" => $sctg['ID'], "NAME" => $sctg['NAME']);  
} 

を使用し、それはあなたの

+0

$ i ++を使う必要はありません。 - 真実!まだjsonはありません! この問題は$ json_valuesキーで確認できます。 – aainaarz

関連する問題