2017-02-06 8 views
0

これは私が直面している問題です。phpからjs関数を呼び出して、PHPのhtml文字列を引数として渡そうとしています

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>'); 
} 

は、私はあなたが、引用符( ")を追加するためにはJavaScriptがそれが文字列だ知っているように、そしてあなたがクラスを持っているかもしれないので、あなたが、addslashesを使用する必要があります必要

'<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) 
+0

中括弧はなぜですか?文字列は引用符で囲まれています。 –

+0

show insertCartInHeader please –

+0

あなたはあなたの質問を編集しましたが、私のコメントを無視しましたか? –

答えて

3

を渡していた文字列であります。またはそのHTMLの属性

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

このようにaddslashes何かがなければ、動作しません。

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

複数行htmlの場合、これはうまくいくはずです。

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

あなたはそれを改善することができますが、あなたは考えを得る。

+0

Uncaught SyntaxError:無効なトークンまたは予期しないトークン – Nikanor

+0

私は自分のHTMLで試してみましたが、動作し、文字列全体を$ cartに投稿します。 –

+0

@Nikanorあなたのコードが複数行であるため、あなたはまだ問題があると思います。 "\"で改行をエスケープする必要があります。 –

関連する問題