2016-08-16 26 views
1

複数のボタンを動的に作成しています。JavaScript関数にonclickメソッドを使用してPHP変数を渡す必要があります。ボタンクリックでPHP文字列変数をJavascript関数に渡す

以下のコードは大部分は問題なく動作しますが、変数に二重引用符または一重引用符が含まれていると、関数を呼び出すことができません。

htmlspecialcharactersENT_QUOTESを使用して試してみましたが、二重引用符で問題を修正しましたが、一重引用符ではまだ失敗しています。

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

これを修正する方法に関する提案やこれを行うには良い方法がありますか?

<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機能:

答えて

1

は、私はあなたが、何かのようなあなたのVARSからJSONオブジェクトを作成し、それを引数として渡すことをお勧め次のように定義します。

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

変数が既に配列内にある場合はどうなりますか? $ value ['title'] – ijason03

+0

私の答えを更新しました。 –

0

私は、ボタンのクリックや他のイベントからJavaScriptに変数を渡すの最良の方法をお勧めします。

ボタンに渡す引数をデータ属性として追加します。

例:

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

とPHPスクリプトのためのAJAX呼び出しのものを使用します。

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

そして、あなたは同じような属性を取得することができますPHPスクリプトやAJAXリクエストで

これはあなたが探していたものです。

関連する問題