我正在尝试插入一些选项来选择哪些选项是从数据库中获取的,并且也被放置到 jQuery 代码中。我使用了 json_encode,但这并没有解决所有问题。
基本上,/被转义并且只有单引号,这很好,但它在字符串的开头和结尾放置了双引号:
我在控制台中看到的示例代码:
"<div style='display: inline-block; width: 30%;'>"+
"Article categories:"+
"<br>"+
"<select name='article_cat' class='textbox' style='width:250px;'>"<option value='1'>Random<\/option>\n"</select>"+
"</div>"+
控制台中出现此错误代码:
Uncaught SyntaxError: Unexpected identifier
这是 PHP 文件本身中的 jQuery 代码:
var options4 = {
dataType: 'json',
success: function(output) {
$("... BLA BLA BLA .... 40 lines of code....."+
"<div style='display: inline-block; width: 30%;'>"+
"Article categories:"+
"<br>"+
"<select name='article_cat' class='textbox' style='width:250px;'><?php echo json_encode($art_catlist); ?></select>"+
"</div>"+
"Bla bla bla .... another 20 lines of code"+
"</div>").insertBefore("#new_background_header");
Some more jQuery code......
}
有人知道为什么会发生这种情况吗?
这段代码创建了选项列表(它也必须在 PHP 中可用,所以不能真正改变它很多):
while ($data = dbarray($result)) {
$art_catlist .= "<option value='".$data['article_cat_id']."'>".$data['article_cat_name']."</option>\n";
}
控制台屏幕:
Ps.:为什么要删除消息开头的“嗨”?想要打个招呼并感谢您的每一个帮助。现在看来我很粗鲁:(
最佳答案
$art_catlist
— 是 PHP 中的字符串。其内容为:<option value='1'>Random<\/option>
。json_encode($art_catlist)
— 生成该字符串的 JSON 表示形式,即结果包含双引号。字符串的内容是:"<option value='1'>Random<\/option>"
"<select name='article_cat' class='textbox' style='width:250px;'><?php echo json_encode($art_catlist); ?></select>"
— 产生以下输出:"<select name='article_cat' class='textbox' style='width:250px;'>"<option value='1'>Random<\/option>"</select>"
.“简化”,JavaScript 看到以下标记:
"some string"<option value
...所以在 JS 中你有一个字符串文字,然后是比较运算符,然后是一个标识符,然后(这是 JS 中的语法错误)空格和另一个标识符。
最简单的解决方案是添加字符串连接,这是由 JS 运行的。
PHP 代码:
"<select name='article_cat' class='textbox' style='width:250px;'>"
+ <?php echo json_encode($art_catlist); ?>
+ "</select>"
关于javascript - PHP 字符串与 Javascript 兼容(引号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28199611/