2

JQueryとPHPで特定のボタンが押されたときに何かをしたいです。ただし、問題は、私のページのボタンが動的に生成され、すべて異なる値を持つことです。つまり、3 つ、4 つのボタンなどになる可能性があります。

主な問題は次の 2 つです。

1) 最初のボタンのみが Javascript によって認識され、他のボタンは何もしません。

2) JavaScript で変数 id を PHP コードに渡す方法が見つかりません。

例で問題が明確になることを願っています。

HTML、ボタンの数は不明、すべて異なる値:

<button id='button' value='$variableid1'>Do something</button>
<button id='button' value='$variableid6'>Do something</button>
<button id='button' value='$variableid11'>Do something</button>
...

押されたとき、私はこのJavascriptコードを有効にしようとしました:

 $(document).ready(function() {
   $("#button").click(function() {
    $.ajax({
        type:"POST",
        data: {clicked: ?},
        });
    });

});  

同じページの PHP コード:

if(isset($_POST['clicked'])){

//do some stuff with the variable id.

}
4

4 に答える 4

3

ID は一意である必要があり、代わりにクラスを使用する必要があり、動的に生成された要素については、イベントをデリゲートする必要があります。

$(document).on('click', '.button', function(e) {
   // e.preventDefault();
   $.ajax({
       type:"POST",
       data: {clicked: this.value},
   }).done(function(data){
       console.log(data, 'done');
   });
});
于 2013-05-01T10:21:25.563 に答える
1

ここには多くの間違いがあり、どこから始めればよいかわかりません

<button id='button' value='$variableid1'>Do something</button>
<button id='button' value='$variableid6'>Do something</button>
<button id='button' value='$variableid11'>Do something</button>

上で述べたように、id はページ上で一意でなければなりません。それらは結局、単なるウィンドウ ドレッシングではなく、html 要素へのキーです。

そう

<button id='button1' value='$variableid1'>Do something</button>
<button id='button2' value='$variableid6'>Do something</button>
<button id='button3' value='$variableid11'>Do something</button>

スクリプト変数から「値」に値をロードする場合は、これを行う必要があります

<button id='button1' value='<?php echo $variableid1; ?>'>Do something</button>
<button id='button2' value='<?php echo $variableid6; ?>'>Do something</button>
<button id='button3' value='<?php echo $variableid11; ?>'>Do something</button>

または、php でショートタグがオンになっている場合はこれ

<button id='button1' value='<?=$variableid1?>'>Do something</button>
<button id='button2' value='<?=$variableid6?>'>Do something</button>
<button id='button3' value='<?=$variableid11?>'>Do something</button>

ボタンが押されたときにフォーム データを処理する php スクリプトでどのボタンが押されたかを知りたい場合は、名前を付ける必要があります。

<button id='button1' name='buttons1' value='<?php echo $variableid1; ?>'>Do something</button>
<button id='button2' name='buttons2' value='<?php echo $variableid6; ?>'>Do something</button>
<button id='button3' name='buttons3' value='<?php echo $variableid11; ?>'>Do something</button>

jQuery で一連のものを検索できるようにする 1 つの方法は、jQuery で使用できるが実際の css クラスである必要のないクラス名をそれらに与えることです。そのため、「jq-butset」のようなわかりやすい名前を使用しましょう。

<button id='button1' class='jq-butset' name='buttons1' value='<?php echo $variableid1; ?>'>Do something</button>
<button id='button2' class='jq-butset' name='buttons2' value='<?php echo $variableid6; ?>'>Do something</button>
<button id='button3' class='jq-butset' name='buttons3' value='<?php echo $variableid11; ?>'>Do something</button>

jQueryコードは次のようになります

$(document).ready(function() {
   $(".jq-butset").click(function() {
      posting = $.post('url/to/the/phpscript/to/run/test.php',
                   { buttonname: $(this).attr('name'), 
                     buttonvalue: $(this).attr('value')
                   }
       );
       posting.done( function (data) {
        ... do something with the data returned
       });
       posting.error( function () {
         .. do something if an error occurs
       });
    });
   });
});  
于 2013-05-01T11:30:22.600 に答える