PHP字符串与Javascript兼容(引号)

时间:2015-01-28 18:22:48

标签: javascript php html

我正在尝试插入一些选项来选择从DB中获取的选项,并将其放置到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";
}

来自控制台的屏幕: enter image description here

Ps。:为什么你在消息开头删除Hi?想嗨,谢谢你的帮助。现在看来我很粗鲁:(

1 个答案:

答案 0 :(得分:1)

  • $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>"

    &#34; Simplified&#34;,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>"

另一种方式是remove quotes from JSON-encoded string on PHP side