传递给javascript函数的PHP数组没有做任何事情

时间:2014-10-07 14:22:45

标签: javascript php arrays

我有一个使用" 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;]

非常感谢任何帮助或提示。

3 个答案:

答案 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;