0

我一直在尝试解决这个问题,我似乎无法成功,这是我的 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 DB 的值回显到对象中,现在结果是这样的

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. 

最后一行被什么东西打断了,然后它溢出了

4

2 回答 2

2

像这样构建你的 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 数据的正确方法。

于 2013-05-28T16:16:17.827 回答
0

如果您回显的内容中有单引号,它将破坏您的 javascript。您需要使用 addlashes 来转义引号:

description: '<?php echo addslashes($facebookNoEscape['definition']) ?>'
于 2013-05-28T16:15:24.197 回答