PHP响应返回的同步Javascript中的非法令牌,涉及跨站点小部件开发



我在测试主题网站上有一个小部件;在下面

<div id="widget"></div>
<script src="http://www.project.com/api/?api=bXOIo4ERTaZt-a5b71a1c" type="text/javascript"></script>
<script>

initialise(); 

</script>

该小部件与项目网站的通信没有任何障碍。除了,当我在项目网站上有PHP时;

function initialise() { 
var container = 'widget'; 
var ele = document.getElementById( container );

var response = "<?php foreach( $this -> get( 'api:bestsellers' ) as $record ): ?><p><?php echo $record -> get( 'title' ); ?>, <?php echo $record -> get( 'format_price' ); ?></p><br><?php endforeach; ?>";
ele.innerHTML = response;
}

这是项目网站上的PHP,由小部件调用。除了当我把PHP放在一个新行上(例如缩进等等(时,我在开发工具上得到了一个错误之外,这一切都很好;

var response = "
<?php foreach( $this -> get( 'api:bestsellers' ) as $record ): ?><p><?php echo $record -> get( 'title' ); ?>, <?php echo $record -> get( 'format_price' ); ?></p><br><?php endforeach; ?>";

我明白了:";未捕获的SyntaxError:无效或意外的令牌";

需要注意的是:1(我使用同步Javascript是有原因的,异步Javascript/AAJAX不是一个选项,因为我需要在同一页面上有多个小部件,2(我的专业领域是PHP而不是Javascript,3(我尝试过(Javascript(字符串替换非UTF8字符、换行符和制表符等以及响应中的不可见字符。

有点不明白为什么我不能在PHP块上使用缩进,有什么建议可以让响应完整地返回到小部件,没有错误或错误?谢谢

发生错误的原因是变量response的字符串位于多行。若要使字符串具有多行,请使用反标记。试试这个:

var response = `
<?php foreach( $this -> get( 'api:bestsellers' ) as $record ): ?><p><?php echo $record -> get( 'title' ); ?>, <?php echo $record -> get( 'format_price' ); ?></p><br><?php endforeach; ?>`;
// Did not give an error!

最新更新