试图从php调用js函数并将php html字符串作为参数

时间:2017-02-06 15:38:06

标签: javascript php

这是我面临的问题。

 echo "<script type='text/javascript'>window.insertCartInHeader({$cart});</script>";

$ cart变量持有HTML代码块。 我得到Uncaught SyntaxError: Unexpected token <

解?

window.insertCartInHeader = function(cart){ 
    console.log(cart)
    var list = $("#top-links").append('<ul id="cart-header"></ul>').find('#cart-header');
    list.append('<li>'+cart+'</li>');
}

这是我传递的字符串

'<div id="cart">


  <button type="button" data-toggle="dropdown" data-loading-text="Loading..." class="heading dropdown-toggle">

  <div class="pull-left flip"><h4></h4></div><span id="cart-total">0 item(s) - £0.00</span></button>


  <ul class="dropdown-menu">


    <li>

      <p class="text-center">Your shopping cart is empty!</p>

    </li>


  </ul>

</div>

' (length=402)

1 个答案:

答案 0 :(得分:3)

你需要添加引号(“),让javascript知道它是一个字符串,你应该使用addslashes,因为你可能在那个html中有类或属性。

echo "<script type='text/javascript'>window.insertCartInHeader(\"". addslashes($cart) . "\");</script>";

如果没有这样的addlashes,将无效:

$html = '<h1 class="hi">It works</h1>';

对于多行html,这应该有效。

str_replace("\n", "\\", addslashes($cart)); 

你可以改进替换,但你明白了。