jquery ajax成功加载js

时间:2011-10-17 07:33:11

标签: jquery google-plus

我尝试在jquery ajax page中添加google plus按钮,我遇到了一些麻烦。

我的代码导致Uncaught TypeError: Cannot read property 'prototype' of undefined并且loadind js失败到ajax页面。那怎么解决?感谢。

$.ajax({
  url: url, 
  dataType: "html",
  type: 'POST',
  data: data, 
  success: function(html){
    $('#result').html(html);
    $('#googleplus').html('<g:plusone href="'+window.parent.document.URL+'" size="tall"></g:plusone>');
    $.getScript("https://apis.google.com/js/plusone.js");
  }
});

1 个答案:

答案 0 :(得分:0)

您可能需要使用$ .getscript的回调函数在加载脚本后插入按钮。

编辑我的回答,正在考虑相同的原始政策,但json应该可以跨域使用getscript。

不知道它是否有效,但请尝试:

$.getScript("https://apis.google.com/js/plusone.js", function () {
    $('#googleplus').html('<g:plusone href="'+window.parent.document.URL+'" size="tall"></g:plusone>');
});
编辑:实际上我自己测试了这个,这个工作正常,给我+1。

再次编辑,如果它仍然不起作用,你的一个变量是错误的,或者你试图将按钮插入到一个不存在的div中。 为了确保div存在,并且如果它在您使用Ajax的html中,您可以在完整的处理程序上调用该函数,如下所示:

$.ajax({
   url: url, 
   dataType: "html",
   type: 'POST',
   data: data, 
   success: function(html){
       $('#result').html(html);
   },
   complete: function() {
       $.getScript("https://apis.google.com/js/plusone.js", function () {
           $('#googleplus').html('<g:plusone href="'+window.parent.document.URL+'" size="tall"></g:plusone>');
       });
   }

});

之后你应该检查你的变量,看看window.parent.document.URL在一个警告中返回什么。我想你使用iFrame,否则它只是window.location.href,这是我在没有iFrame测试上面代码时使用的。

在iFrame中,parent.location.href通常可以解决问题。

希望最后编辑,进行一些测试,并使用您的代码导致与您报告的错误相同的错误。我假设你在iFrame中做了一些事情,如果不是你应该使用:

$.getScript("https://apis.google.com/js/plusone.js", function () {
    $('#googleplus').html('<g:plusone href="'+window.location.href+'" size="tall"></g:plusone>');
});