0

私のコントローラーには、データベースからの文字列があります。私が使う

$user_id = $this->input->post('user_id');

$this->load->model('database','', TRUE);

$projects = $this->database->get_projects($user_id);

    foreach($projects as $project)
    {

        echo '  <div onclick="someFunction(\''.$project['description'].'\')"></div>';
    }

Javascript に値を渡します。文字列に二重引用符がない限り、すべて正常に機能します。ファイアーバグスロー

未終了の文字列リテラル

私はもう試した:

onclick = "someFunction(\''.addslashes($project['description']).'\')"

また

$description = str_replace('"', '&quot;', $project['description']);
onclick = "someFunction(\''.$description.'\')";

しかし、うまくいきませんでした。

ご協力いただきありがとうございます

4

2 に答える 2

0

あなたができる最善のことは、このコードを含むビューを作成することだと思います:

<div onclick="someFunction('<?php echo $project['description'] ?>')"></div>

コントローラーで呼び出します。最終的に、php 関数のaddslashes()を使用して、文字列/文字を引用できます。

この html をコントローラーの変数に格納する必要がある場合は、ビューを呼び出す 3 番目のパラメーターを使用するだけです。ここで説明します。

更新:addslashesではなくhtmlentitiesを使用してみてください

于 2012-11-20T13:47:48.140 に答える
0

試す:

onclick = someFunction(<?php echo '"'.$myVariable.'"'; ?>);

引数の括弧を引用することはできません...これはグローバルであり、JS だけに適用されるわけではありません。

PHP と js または html を混在させるには、必要な場所で echo を使用するだけです。または、よりクリーンなコードが必要な場合は、MVC モデルを検索してください。

于 2012-11-20T12:24:11.727 に答える