我有一个使用" json_encode($ array)"传递给js函数的php数组,问题是当我点击按钮触发该功能时,除页面外没有任何反应清爽。
我认为问题可能是封闭的引号,虽然我已经尝试过从双重变为单一,反之亦然,没有快乐。
HTML:
<button class="button1"
onclick="validateEncomenda('<?php echo json_encode($chosen_restaurant_addr);?>');
return false;">Encomendar</button>
JS:
function validateEncomenda(myarray){
alert('Hello JS');
}
如果我回复&#34; json_encode($ chosen_restaurant_addr)&#34; 我以这种格式获得正确的值:
[&#34; ipsum lorem blah blah&#34;,&#34; Curabitur aliquam feugiat tellus&#34;]
非常感谢任何帮助或提示。
答案 0 :(得分:2)
处理此问题的更好方法是将onclick处理与HTML源分开。你可以创建一个这样的脚本:
var chosenResturant = <?php echo json_encode($chosen_restaurant_addr);?>;
document.getElementById('button1').onclick = function() {
// no need to parse JSON here as we created an array literal above
alert(chosenRestaurant.length);
return false;
};
请注意,我假设您向元素添加了一个id button1
,作为确定哪些元素获取事件处理程序的方法。如果您确实希望将此行为附加到类名为button1
的所有元素,则只需替换getElementsByClassName('button1')
而不是getElementById('button1')
答案 1 :(得分:1)
您应该在PHP输出中转义引号。由于HTML引用无法转义,因此请重写:
onclick='validateEncomenda("<?php echo addslashes(json_encode($chosen_restaurant_addr)); ?>"); return false;'>
答案 2 :(得分:0)
我认为您应该为按钮添加新属性:type =&#34; button&#34;