0
    <?

    //SQL SELECT HERE

    $result = mysql_query($sql);

    $options = '';
    while ($row = mysql_fetch_array($result)) {
        $options .= '<option>Data: ' . $row['data'] .'</option>';
    }
    ?>
    $("#multiSelect").html("<?=$options?>");

上記は、javascript 関数でインライン化された PHP クエリです。その目標は、複数選択を設定することです。問題は、$row['data'] に二重引用符で囲まれたものが含まれている場合、jQuery がそれを気に入らず、文句を言うことです。二重引用符を含む行を削除すると、正常に動作します。

どうすればこれを回避できますか? これは jQuery の通常の動作です。

4

3 に答える 3

2

ラッシュを追加してみてください: http://php.net/manual/en/function.addslashes.php

于 2012-07-13T18:19:00.507 に答える
1

それは、あなたの呼び出しが次のようなものとして出ているためです。

$("#multiSelect").html(""Hello"");

ほとんどのプログラミング言語では、これに問題があります。追加する最初の引用符が、渡す文字列を終了し、次のテキストが有効なコードであることを前提としています。

引用符をエスケープするか、削除するか、別のものに置き換えることで回避できます。

$("#multiSelect").html("<?=addslashes($options)?>");    
$("#multiSelect").html("<?=str_replace('"', '', $options)?>");    
$("#multiSelect").html("<?=str_replace('"', '\'', $options)?>");    

入力テキストが何であるかに応じて。

于 2012-07-13T18:21:16.560 に答える
0

jQuery で設定するのではなく、コード ビハインドでオプションを作成するのはなぜですか? なぜPHPはそれ自体を設定できないのですか?

\ で引用符をエスケープする必要があります

"Man it is \"hot\" in here"
于 2012-07-13T18:20:11.650 に答える