使用AJAX正确加载PowerReviews

Gre*_*ick 4 javascript ajax magento

我们在Magento商店内使用PowerReviews作为对标准Magento评论系统的重视.我们已经为类别,产品和评论页面设置了它,并且已经有一段时间了.

最近我添加了一个模块,它将AJAX重新加载功能带到类别页面上的过滤导航.即我选择"红色"作为过滤器,类别页面刷新,无需重新加载适当的产品.当我关闭电源评论时,这很好用.

当Power Reviews打开时,AJAX开始加载,但页面变为白色,只显示PowerReviews <div>标签.当我查看PowerReviews代码时,我想我可以看到原因:

<script type="text/javascript">
  POWERREVIEWS.display.snippet(document, {
       pr_page_id : '49DAF4', 
       pr_write_review :    '/review/product/list/id/1907/category/111/#review-form',
       pr_read_review : txt, pr_snippet_min_reviews : 1});
</script>
Run Code Online (Sandbox Code Playgroud)

由于POWERREVIEWS.display.snippet被称为'文档'我认为正在发生的是AJAX负载正在发生,写入'文档'然后PowerReviews正在发生并且也被写入'文档'.由于这发生在最后,它劫持页面而不是像正常负载那样正确放置.

如果我将"文档"更改为类似内容document.getelementbyid('PWR')并添加<div id="PWR">,则该页面上不会显示该代码段.有没有办法可以将输出定位POWERREVIEWS.display.snippet到"文档"以外的其他内容,这样两个脚本就不会相互干扰?

Gre*_*ick 8

PowerReviews实际上提供了一个有效的答案.他们建议直接使用JQuery交付方法到DIV.将它发布在这里以帮助他人.

1)将JS include插入到该节中的jquery库中(如果还没有):

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

2)对代码段函数调用使用write:function(content)语法:

<div id="pr_snippet_category_12345"> <script type="text/javascript">
POWERREVIEWS.display.snippet({ write : function(content) {
$('div#pr_snippet_category_12345').append(content); } }, { pr_page_id
: '12345', pr_snippet_min_reviews : '1' }) </script> </div>
Run Code Online (Sandbox Code Playgroud)