我一直在试图修复这个几个小时,我似乎不能成功地做到这一点,这是我的JS
var obj = {
method: 'feed',
link: 'http://www.myDomain.com/words/?w=<?php echo urlencode($facebookNoEscape['searchWord']) ?>',
picture: 'http://www.myDomain.com/actions/image.php?img=<?php echo urlencode($image_word) ?>&dir=thumbs',
name: '<?php echo $facebookNoEscape['word'] ?>',
caption: 'Author: <?php echo $facebookNoEscape['nickname']?>',
description: '<?php echo $facebookNoEscape['definition']?>'
};
注意:值可以包含"/"或"/",因为在插入过程中我允许这两个,并且它们在插入过程中被mysqli_real_escape_string转义。
如你所见,我将MySQL数据库中的值回显到对象中,现在结果是这个
SyntaxError: unterminated string literal
description: 'Well, personal favorite in the following order.
all.js (line 27, col 15)
字符串以'
开头我试过json_encode,部分工作,我没有遇到这个问题,但是,我不能使用图像链接,如:
'http://www.myDomain.com/actions/image.php?img=<?php echo urlencode($image_word) ?>&dir=thumbs'
的结果如下:
http://www.myDomain.com/actions/image.php?img="someImage"&dir=thumbs
注意"someImage"括号不应该在那里
其他所有回显字都用"括起来。
有什么建议吗?
编辑:输出 var obj = {
method: 'feed',
link: 'http://www.funkydictionary.com/words/?w=facebook%3D1',
picture: 'http://www.funkydictionary.com/actions/image.php?img=FunkyDictionary- Facebook1-image.jpg&dir=thumbs',
name: 'Facebook',
caption: 'Author: bill',
description: 'Well, personal favorite in the following order.
1. A stalkers dream come true
2. The reason most work are never done on time.
最后一行被什么东西打断了,然后它流过
像这样构建JS代码不是一个好主意。这几乎总是导致错误。
相反,您应该在PHP中构建数组,然后使用PHP的json_encode()
函数输出,如下所示:
<?php
$jsObj = array(
'method' => 'feed',
'link' => 'http://www.myDomain.com/words/?w='.urlencode($facebookNoEscape['searchWord']),
'picture' => 'http://www.myDomain.com/actions/image.php?img='.urlencode($image_word).'&dir=thumbs',
'name' => $facebookNoEscape['word'],
'caption' => 'Author: '.$facebookNoEscape['nickname'],
'description' => $facebookNoEscape['definition']
);
echo "var obj = ".json_encode($jsObj).';';
?>
这样,PHP将为您进行所有正确的转义,从而为您提供有效的Javascript字符串。这是从PHP输出所有JSON或Javascript数据的正确方法。
如果你回显的内容中有单引号,它会破坏你的javascript。你需要使用地址斜杠转义你的引号:
description: '<?php echo addslashes($facebookNoEscape['definition']) ?>'