0

カテゴリという名前のドロップダウンがあります。オプションは、MySQL テーブルでカテゴリ名を照会する PHP スクリプトによって入力されます。

その隣に、Subcategory という名前のドロップダウンがあります。オプションは、MySQL テーブルでサブカテゴリ名を照会する PHP スクリプトによっても入力されます。

カテゴリ ドロップダウンから選択されたカテゴリに基づいて、サブカテゴリ クエリを再実行して、サブカテゴリ ドロップダウンの値を変更したいと思います。

そして、ページを更新したくないので、ここでjqueryが役立つのではないかと思いますか?

4

3 に答える 3

1

このようなもの?

$(document).ready(function(){
    var select = $("#select-element");
    select.change(function(){
        $.ajax({
            type : 'POST',
            url: "url-of-your-php-script",
            data: {
                'data-name' : 'data-to-send'               
            }
            success : function(returned){
               // Append variable  results to select..
            }                
        });            
    });
});​
于 2012-10-19T19:27:06.613 に答える
1

一般に、jQuery(またはその他のフレームワーク)は、既にページにダウンロードしていない限り、使用しないでください。ブラウザがスクリプトとライブラリをダウンロードしている間(そのうち、jQueryがおそらく最大になるでしょう)、ページの残りの部分は実行できません。理由はわかりませんが、画像をダウンロードしたり、iframeを読み込んだりすることはありません。

新しいコンテンツをダウンロードするためにAJAXリクエストを行うことができます。これは基本的にデータベースにアクセスできるWebサービスを作成していることを意味するため、注意してください。サーバーとjavascriptの両方で入力を検証し、ドロップ/削除アクションのセキュリティを開発してください。

これがAjaxのネイティブjavascriptチュートリアルですが、AJAXに夢中になっている場合は、それを使用できます。

基本的な目標は次のとおりです。

  1. クエリの新しいパラメータを引数として取るWebページを作成してから
  2. AJAXでそれを呼び出し、そして
  3. 返された情報を使用して、ドロップダウンを再入力します。

jQueryにすべてを任せる前に、ネイティブコードでAJAXを理解していることを確認してください。最終的にjQueryフレームワークを使用することを選択した場合でも、このコードをデバッグ、アップグレード、および再利用するときに役立ちます。

于 2012-10-19T19:31:52.527 に答える
0
  1. はい、Jquery $.ajax() または $.post() 関数を具体的に使用する必要があります。
  2. サブカテゴリのドロップダウンは、変更イベントで親カテゴリをリッスンする必要があります。Jquery では、これを使用して実行できます。

    $('#parent').change(関数(){

           var parent = $(this).val();
           // Remove current subcategory options
           $('#child').children().remove();
           // AJAX POST
           $.ajax({
    
             type:'POST',
    
        data: 'parent='+parent,
    
        url: 'process.php',
    
        success: function(data){
    
                    // Fill the subcategory with new options using jquery each method 
    
                 }
               });
    
        });
    
于 2012-10-19T19:30:59.137 に答える