问题与javascript,发布到facebook API,通过<php echo ?>,需要转义'和“


Issues with javascript, posting to facebook API, via <php echo ?>, need to escape ' and "

我一直在试图修复这个几个小时,我似乎不能成功地做到这一点,这是我的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']) ?>'