2013-10-14 164 views
1

我有一个变量的问题,我想通过ajax传递给php。用onclick将变量传递给ajax

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

livesrc.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未设置。 (undefinded)

的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不工作。用“this.name”在HTML中调用是否正确?

+1

试试'$(this).attr(“name”)' – tymeJV

+0

你可以试试'$(this).attr('n ame')'? (如果你使用jQuery? – Darren

回答

4

这是因为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> 
+0

完美!谢谢! – mnlfischer

0

您可以在整个元素传递到您的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')); 
}