<?
//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的正常行为。
答案 0 :(得分:2)
尝试使用addslashes:http://php.net/manual/en/function.addslashes.php
答案 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"