我已经尝试修复这个问题几个小时了,我似乎无法成功,这是我的 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 数据的正确方法。
关于php - javascript 问题,通过 <php echo ?> 发布到 facebook API,需要转义 ' and ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16796719/