PHP将2个变量onClick发送到Javascript

时间:2013-11-14 21:29:54

标签: javascript php html

我想发送2个变量(我使用php创建一个html元素),当用户点击时,会弹出一个包含2个变量的警告。 我已经设置了这个:

PHP:

$item = array ( 
        'string' => $node->getElementsByTagName('string1')->item(0)->nodeValue,
        'string2' => $node->getElementsByTagName('string2')->item(0)->nodeValue,
        );


$string1 = str_replace(' & ', ' & ', $item['string']);
$string2 = str_replace(' & ', ' & ', $item['string2']);

<a href="#" onclick="doSomething($string1, $string2)" id="'.$title.'" return false;"  title="'.$title.'">'.$title.'</a></strong><br />';

使用Javascript:

<script>
    function doSomething(variable1,variable2) {

    var myVar1 = variable1;
    var myVar2 = variable2;

        alert (myVar1+ ' ' +myVar2);
        return false;

    }
</script>

我试过这个,但当我点击链接时没有任何反应。

将变量从php发送到javascript的正确方法是什么?

感谢您的时间。 有可能这样做吗?

  <a href="#" onclick"doSomething(this) id="'.string1.'" description="'.string2.'" />link </a>

这样做而不是其他解决方案吗?

<script>
        function doSomething(obj) {

    if(obj!= null)
 alert ('Obj is Null');
 }else {
            alert (obj.getAttributeById("id")+' '+obj.getAttributeById("description"));
            return false;

        }
    </script>

3 个答案:

答案 0 :(得分:0)

您没有引用onclick中的参数,因此您的代码看起来就像:

<a href="#" onclick="doSomething(Hello, World!)" ...

将变量的内容转换为未定义的变量和语法错误(“非括号”?)。

尝试

<a href="#" onclick="doSomething('$title', '$string')" id= etc...

而是..注意变量周围的引号。另请注意,您永远不应将PHP数据直接转储到这样的Javascript上下文中。正如您所知,最轻微的故障,您已经引入了JS语法错误,这会导致整个javascript块崩溃。

始终输出json_encode()'d数据,确保您生成语法上有效的JS代码。

答案 1 :(得分:-1)

您只需要将值连接到echo字符串中:

echo '<a href="#" onclick="doSomething(\'' . $title . '\', \'' . $string . '\')" id="' . $title . '" return false;"  title="' . $title . '">' . $title . '</a></strong><br />';

答案 2 :(得分:-1)

当你打印php变量时,它只打印变量,所以如果$ title等于Hello,Java Script解释器会认为Java Script中有一个名为Hello的变量。 为避免这种情况,您必须在HTML中将引号内的变量值打印到HTML中。

$string = 'World!';
$title = 'Hello';

echo '<a href="#" onclick="doSomething(\'' . $title . '\', \'' . $string '\')" id="'.$title.'" return false;" title="'.$title.'">'.$title.'</a></strong><br />';