使用 onclick 将变量传递给 ajax


Passing variables to ajax with onclick

我对变量有问题,我想通过ajax传递给php。

在 php 文件中,我生成了一些带有 id 和 name 属性的div。

生命.php

echo "<div class='"search-results'" id='"" . $softwareArray['Sw_idn'] . "'" 
name='"" . $softwareArray['SoftwareName'] . "'" 
onclick='"addBasket(this.id, this.name)'" >
" . utf8_encode($softwareArray['SoftwareName']) . "</div>";

相关的部分是这样的:

onclick="addBasket(this.id, this.name)

很抱歉转义,在 html 中div 看起来像:

<div class="search-results" id="235" 
name="Adobe Acrobat Writer 9.0 Professional"
onclick="addBasket(this.id, this.name)">...</div>

这看起来不错,但是在js"addBasket"中,变量sw_name没有设置。(未找到)

头部部分中的 JS:

<script type="text/javascript">
  function addBasket(sw_id, sw_name) 
  {
    alert(sw_name);
    $.post("assets/basket.php",{sw_id: sw_id, sw_name: sw_name}, function(data) 
  { 
      $("#basket").html(data);
    });
  }
</script>

sw_id已设置,但sw_name不起作用。html 中带有"this.name"的调用是否正确?

这是因为this.name不存在,如果你想访问你必须调用的属性this.getAttribute('name') ID是特定的,可以直接访问。

就个人而言,我会为函数提供理由,并在函数中提取 id 和名称

 onclick="addBasket(this)";


<script type="text/javascript">
  function addBasket(el) 
  {
    var 
    sw_id = el.id,
    sw_name = $(el).attr('name');
    alert(sw_name);
    $.post("assets/basket.php",{sw_id: sw_id, sw_name: sw_name}, function(data) 
  { 
      $("#basket").html(data);
    });
  }
</script>

您可以将整个元素传递到 js 中:

<div class="search-results" id="235" 
name="Adobe Acrobat Writer 9.0 Professional"
onclick="addBasket(this)">...</div>

然后在函数中获取您想要的内容

function addBasket(sw) {
    alert( sw.id + ' ' + sw.getAttribute( 'name' ) );
}