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 回答