2

当通过 JQuery 和 PHP 按下某个按钮时,我想做一些事情。然而,问题是,我页面上的按钮是动态生成的,都具有不同的值。所以它可能是三个,四个按钮,......等等。

两个主要问题是:

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 中搜索一组事物的一种方法是给它们一个可以在 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 回答
1

您可能想尝试这个来获得这些值:

  1. 让元素具有相同的类和唯一 ID
  2. 使重复的按钮具有相同的类,称为按钮,例如 <button class='button' value='<?php echo $variableid1 ?>'Do something</button>
  3. 然后使用 jquery 你可以像这样访问每个按钮的值:

    $(".button").live('click',function(){    
    var valueofbutton = $(this).val();    
    alert(valueofbutton);//also put your ajax function here...   
    })
    

注意“live”的使用。

于 2013-05-01T10:53:54.607 回答
1

这是错误的,您不能为多个元素使用相同的 id。您需要为每个元素提供唯一的 id。您可以拥有相同的班级但不同的ID。

于 2013-05-01T10:17:18.290 回答