2011-01-25 12 views
2

私はデータベースに2つのテーブルカテゴリとサブカテゴリを持っています。 私のフォームには2つのコンボボックスカテゴリとサブカテゴリがあります。今私はカテゴリを変更すると、それに応じてサブカテゴリを変更する必要があります。配列がjavascriptで定義されている場合、私はそれを行うことができます。私の場合、サブカテゴリは選択されたカテゴリの値に基づいてデータベースからロードされます。私はPHPを使用してデータベースからデータを取得できます。データがPHPの配列にある場合、どのように私はそれをJavaScriptに渡します。どうすればこの問題をajaxなしで解決できますか?ソリューションがJSONの場合、私はそれを使ったことがないので、どのようにJSONを実装できますか?他のコンボボックスに基づいて1つのコンボボックスの値

+0

例を追加しました。 – crowicked

答えて

1

どちらかあなたはJavaScriptですべてのサブカテゴリを置くか、またはあなたがアヤックスを使用する必要があります。

PHPからJavaScriptにデータを渡すのは非常に簡単です。あなたのサブカテゴリが配列$subcategoriesにある場合は、json_encode($subcategories)の結果をJavaScriptで安全に使用できます(それはJSONがあなたの配列をエンコードしているのでしょうか?

したがって、特定のサブカテゴリを返すAjaxサービスを作成するか、すべてのサブカテゴリを含むJavaScript配列を生成するPHPスクリプトを作成します。

簡単なAjaxのサービスは次のようになります。だから、毎回

$id = (int)$_GET['category']; // The id of the category 
$subcategories = ... // Fetch array of subcategories from db 
echo json_encode($subcategories); 

別のカテゴリでのユーザーのクリックを、あなたのJavaScriptは新しいカテゴリIDを指定して、上記のスクリプトへのAjax呼び出しを行うことがあります。

jQueryを使用する場合、Ajaxを実行するのは非常に簡単です。あなたがeval()を使用することができ、JavaScriptでJSONを解析する

$.ajax({ 
    url: "subcategories.php?cat=123", 
    success: function(encoded){ 
    $("#output").append(encoded); 
    } 
}); 

(上記の例は、多かれ少なかれ、jQueryのドキュメントから直接来ている。)が、その機能は悪です。より良い使用するJSON.parse()またはjQueryの代替。

var subcategories = JSON.parse(encoded); 

今変数subcategoriesは、正確なPHPスクリプトであなたの$subcategoriesが含まれているのと同じデータ構造が含まれています。

2

PHPコードはサーバー側で評価され、クライアント側のコード(JavaScriptなど)は後で処理されます。したがって、PHPを介して切り替える必要があるすべてのデータをプリフェッチして、javascriptで操作できるようにする必要があります。

EDIT:

例:

<?php 

    $arej[]="one"; 
    $arej[]="two"; 
    $arej[]="three"; 
    $arej[]="four"; 
?> 
<script type="javascript"> 

var jarray = new Array; 

<?php 
for($i=0;$i<count($arej); $i++){ 
    echo "jarray[$i]='".$arej[$i]."';"; 
} 
?> 

</script>