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