打破jQuery的双引号(非常简单)

时间:2012-07-13 18:14:37

标签: php javascript jquery

    <?

    //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的正常行为。

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

这是因为你的电话会像以下一样出现:

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

大多数编程语言都会遇到问题 - 他们假设您添加的第一个引号结束了您传入的字符串,并且下一个文本应该是有效的代码段。

您可以通过转义引号,删除它们或将它们替换为其他内容来绕过它:

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

取决于输入文本可能是什么。

答案 2 :(得分:0)

为什么你为什么用后面的代码构建选项而不是用jQuery设置它?为什么PHP不能自己设置它?

您需要使用\

来转义引号
"Man it is \"hot\" in here"