通过按钮单击将PHP字符串变量传递给Javascript函数

时间:2016-08-16 17:51:17

标签: javascript php quotes

我正在动态创建多个按钮,我需要通过onclick方法将一些PHP变量传递给JavaScript函数。

下面的代码大部分工作正常,但如果变量包含双引号或单引号,则无法调用该函数。

我尝试将htmlspecialcharactersENT_QUOTES一起使用双引号来解决问题,但单引号仍然导致它失败。

<button id="modalBtn" type="button" onclick="ShowProduct('<?php echo $title ?>', '<?php echo $description ?>', '<?php echo $img ?>');">View Details</button>

有关如何解决此问题的任何建议或有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

我建议你从你的vars创建json对象并将其作为参数传递,如:

<button 
    id="modalBtn" 
    type="button" 
    onclick="ShowProduct(<?php echo json_encode(array($title, $description, $img))?>);">
        View Details
</button>

或(对于更易读的键)

<button 
    id="modalBtn" 
    type="button" 
    onclick="ShowProduct(<?php echo json_encode(array('title' => $title, 'descr' => $description, 'img' => $img))?>);">
        View Details
</button>

您可以定义的ShowProduct函数如下:

function ShowProduct(params) {
    console.log( params );

    // do other stuff
}

<强>更新

如果您的vars已经在数组中,您可以:

// pass this array:
ShowProduct(<?php echo json_encode($your_array)?>)

// fill new array with required keys only
ShowProduct(<?php echo json_encode(array($your_array['title'], $your_array['description'], $your_array['img']))?>)

答案 1 :(得分:0)

我建议通过按钮点击或任何其他事件将变量传递给javascript的最佳方法。

将传递参数作为数据属性添加到按钮中。

示例:

<button id="b1" type="button" data-id="123" data-name="xyz" data-size="m" onClick="doSomething()">

在php脚本或ajax请求中,您可以获得如下属性:

var id   =  $("#b1").attr("data-id");
var name =  $("#b1").attr("data-name");

并使用ajax调用php脚本。

希望这就是你要找的东西。