Javascript 为什么我没有使用ajax从按钮获取动态值

Javascript 为什么我没有使用ajax从按钮获取动态值,javascript,php,html,ajax,Javascript,Php,Html,Ajax,我创建了一个动态按钮,并使用ajax在单击时调用它。当每个按钮被点击时,它会从一个网站获取一个项目列表,这使它成为动态的 foreach($items as $item_link){ $i++; $item_name = $name[$i]; <button type="button" id="btn" name="btn" value="'.$item_link[$i].'" onclick= " getItem(this.value);">'.$item

我创建了一个动态按钮,并使用ajax在单击时调用它。当每个按钮被点击时,它会从一个网站获取一个项目列表,这使它成为动态的

 foreach($items as $item_link){
    $i++;
    $item_name = $name[$i];
    <button type="button" id="btn" name="btn" value="'.$item_link[$i].'" onclick= " getItem(this.value);">'.$item_name.'</button>
 }
foreach($items作为$item\u链接){
$i++;
$item_name=$name[$i];
“.$item_name”
}
我注意到,当单击每个按钮时,它只返回相同的值,而不是动态返回按钮的不同值。
我的问题是:原因可能是什么?虽然按钮不是表单,但这也是原因吗?

有两种方法,我更喜欢这种方法:-

  • 将onclick事件添加到按钮并向其传递唯一id或名称

    <button onclick="fun('<?=$name?>')">click me</button>
    

    1.最初和在
    foreach()
    中也将按钮
    id
    更改为
    class

    2.你没有回显你的按钮,所以我认为它根本不会出现。所以
    echo
    it和sorrund按钮加引号

    正确的代码:-

    foreach($items作为$item\u链接){
    $i++;
    $item_name=$name[$i];
    回显“.$item_name.”;
    }
    
    注意:-


    每个元素的id必须是唯一的,否则当您在jquery中使用它时,您将始终获得第一个元素数据。

    一个问题是,您对所有按钮使用相同的id,这将给浏览器带来意外行为。您需要更改以下内容:

    foreach($items as $item_link){ 
      $i++; 
      $item_name = $name[$i]; 
      <button type="button" id="'.$item_link[$i].'" name="btn" value="'.$item_link[$i].'" onclick= " getItem(this.value);">'.$item_name.'</button>
    }
    
    foreach($items作为$item_链接){
    $i++;
    $item_name=$name[$i];
    “.$item_name”
    }
    

    或者干脆去掉ID并使用类来代替

    创建具有重复的
    ID
    的动态元素可能会导致多个问题,但我看不出您试图在何处附加此按钮。您甚至还没有将其存储到变量中,因此当源代码运行时,它将抛出语法错误。我建议您格式化问题中的源代码,这样就不会误导任何人,让他们认为您正试图执行问题中的脚本。1。将
    id=“btn”
    转换为
    class=“btn”
    ,因为
    id
    需要每个元素都是唯一的。2.单击按钮获取什么数据(添加该代码以便我们检查)。3.为了更加清晰,还添加了HTML部分
    foreach($items as $item_link){ 
      $i++; 
      $item_name = $name[$i]; 
      <button type="button" id="'.$item_link[$i].'" name="btn" value="'.$item_link[$i].'" onclick= " getItem(this.value);">'.$item_name.'</button>
    }