我尝试在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");
}
});
答案 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>');
});