Javascript 使用jQuery更新脚本标记的src-使用jQuery重新加载脚本而不刷新页面
问题说明了一切。如何使用jQuery更新脚本标记的“src”。 比如说,我有一个剧本Javascript 使用jQuery更新脚本标记的src-使用jQuery重新加载脚本而不刷新页面,javascript,jquery,html,ajax,forms,Javascript,Jquery,Html,Ajax,Forms,问题说明了一切。如何使用jQuery更新脚本标记的“src”。 比如说,我有一个剧本 <script id="somescript" type="text/javascript" src=""></script> 它实际上更新了src,但当我通过firebug检查它时,它告诉我刷新页面以使脚本正常工作 研究: 经过一些研究,我发现jQuery的$.get()可以完成这项工作,是的,它会加载脚本。但这并不能完成我的工作 实际问题: 我试图在成功提交表单时使用Ajax加载
<script id="somescript" type="text/javascript" src=""></script>
它实际上更新了src,但当我通过firebug检查它时,它告诉我刷新页面以使脚本正常工作
研究:
经过一些研究,我发现jQuery的$.get()可以完成这项工作,是的,它会加载脚本。但这并不能完成我的工作
实际问题:
我试图在成功提交表单时使用Ajax加载Google的转换代码
下面是Ajax脚本的一部分,它应该适用于Google的转换代码
if (res == "yes") {
$('#success').fadeIn().delay(5000).fadeOut();
$('#regform')[0].reset();
window.location.href = '#';
/* <![CDATA[ */
var google_conversion_id = xxxxxxxxx;
var google_conversion_language = "en";
var google_conversion_format = "2";
var google_conversion_color = "ffffff";
var google_conversion_label = "CiaXCOXjzlcQy__EyQM";
var google_remarketing_only = false;
/* ]]> */
$.getScript("http://www.googleadservices.com/pagead/conversion.js");
}
if(res==“yes”){
$('#success').fadeIn().delay(5000.fadeOut();
$('#regform')[0].reset();
window.location.href='#';
/* */
$.getScript(“http://www.googleadservices.com/pagead/conversion.js");
}
它加载转换脚本,但当我从firebug中检查它时,转换变量的所有值都为null。
因此,我尝试将所有转换代码放入html文件,然后加载转换脚本,如下所示:
<script type="text/javascript">
/* <![CDATA[ */
var google_conversion_id = xxxxxxxxx;
var google_conversion_language = "en";
var google_conversion_format = "2";
var google_conversion_color = "ffffff";
var google_conversion_label = "CiaXCOXjzlcQy__EyQM";
var google_remarketing_only = false;
/* ]]> */
</script>
<script type="text/javascript" src="#"></script> <!--Update this src-->
<noscript>
<div style="display:inline">
<img height="1" width="1" style="border-style:none;" alt="" src="#" />
</div>
</noscript>
/* */
有什么帮助吗
链接:
以下是实时站点的链接:
更新:
这就是我得到的。在firebug的脚本面板中,表单提交后,
您可以将脚本标记附加到DOM中
if (yourCondition === true) {
$('head')
.append($('<script id="somescript" type="text/javascript" src="linktoscript.js"></script>'));
}
if(yourCondition===true){
$(“头”)
。附加($('');
}
脚本在添加时加载,这样您就可以完全控制加载的时间。谷歌转换脚本似乎依赖于
Google\u conversion\u id
,Google\u conversion\u language
等全局变量。假设你的代码是在一个函数中执行的(如果这是在一个事件中,这是有意义的),那么你的代码将不起作用,因为变量将是它们所在函数的局部变量,google代码将无法获取它们
你可以做两件事
一是提前在全局范围内定义这些变量,即:
<script type="text/javascript">
/* <![CDATA[ */
var google_conversion_id = xxxxxxxxx;
var google_conversion_language = "en";
var google_conversion_format = "2";
...
</script>
另一个选项是在加载脚本之前将变量分配给
窗口
对象,这相当于将变量放入全局范围:
if (res == "yes") {
$('#success').fadeIn().delay(5000).fadeOut();
$('#regform')[0].reset();
window.location.href = '#';
window.google_conversion_id = xxxxxxxxx;
window.google_conversion_language = "en";
window.google_conversion_format = "2";
window.google_conversion_color = "ffffff";
window.google_conversion_label = "CiaXCOXjzlcQy__EyQM";
window.google_remarketing_only = false;
$.getScript("http://www.googleadservices.com/pagead/conversion.js");
}
注意:关于此问题最初涉及的问题,您不能通过更改现有脚本元素的
src
属性来加载脚本:
一旦脚本
元素加载了由src
指示的任何内容(即使它是#
),它基本上就“用完了”,不会加载任何其他内容
您可以做的是创建一个新的script
元素并将其添加到DOM中:
这将成功加载脚本(异步)
正如您所发现的,jQuery还为此提供了
$.getScript
便利方法。最后,以下内容为我完成了任务。感谢并感谢他们的支持
在我以前的代码中,有两个问题
&代码>将在AJAX响应时呈现无效URL编码
错误。谢谢你的帮助。而不是使用&
,像这样直接使用&
if (res == "yes") {
$('#success').fadeIn().delay(5000).fadeOut();
$('#regform')[0].reset();
<!-- Google Code for Lead Conversion Page -->
/* <![CDATA[ */
window.google_conversion_id = xxxxxxxxx;
window.google_conversion_language = "en";
window.google_conversion_format = "2";
window.google_conversion_color = "ffffff";
window.google_conversion_label = "CiaXCOXjzlcQy__EyQM";
window.google_remarketing_only = false;
/* ]]> */
$.getScript("//www.googleadservices.com/pagead/conversion.js");
window.scriptTag2 = document.createElement('noscript');
window.imgTag = document.createElement('img');
imgTag.height = 1;
imgTag.width = 1;
imgTag.border = 0;
imgTag.src = "//www.googleadservices.com/pagead/conversion/xxxxxxxxx/?label=CiaXCOXjzlcQy__EyQM&guid=ONscript=0";
}
if(res==“yes”){
$('#success').fadeIn().delay(5000.fadeOut();
$('#regform')[0].reset();
/* */
$.getScript(“//www.googleadservices.com/pagead/conversion.js”);
window.scriptTag2=document.createElement('noscript');
window.imgTag=document.createElement('img');
imgTag.height=1;
imgTag.width=1;
imgTag.border=0;
imgTag.src=“//www.googleadservices.com/pagead/conversion/xxxxxxxxx/?label=ciaxcjzlcqy\uuuu EyQM&guid=ONscript=0”;
}
我希望它能帮助其他人解决同样的问题。
谢谢。看看这个答案:提供在线链接,复制您的问题,以便debugged@A.Wolff. 谢谢你的关心。我已经更新了帖子并插入了链接。在快速搜索之后,这个脚本似乎使用了文档写入功能,所以在文档完全加载后调用它作为负面效果。重写此方法不是一个好建议,但应该可以解决您的问题。请看这个:希望是这样help@A.Wolff. 我试过你推荐的方法。不过,运气不好。但有一件奇怪的事。我已经将转换代码直接插入document.ready函数,只是为了检查它。不,Ajax或其他复杂的东西。奇怪的是,我仍然看到空值。是否可能提供的代码不正确?你觉得怎么样?我也试过了。结果是一样的。所有转换变量的空值扫描您发布的完整脚本,还是小提琴?我不知道事件流/级联是如何工作的,所以在我知道之前我无法提供帮助;如果我不知道这些变量是在什么地方、什么时候被访问的,那么我就无法尝试去理解为什么这些变量是空的,因为我已经更新了我的帖子,并提供了到实时站点的链接。你现在可以完全检查了。不过,结果还是一样的。sr
$.getScript("http://www.googleadservices.com/pagead/conversion.js");
if (res == "yes") {
$('#success').fadeIn().delay(5000).fadeOut();
$('#regform')[0].reset();
window.location.href = '#';
window.google_conversion_id = xxxxxxxxx;
window.google_conversion_language = "en";
window.google_conversion_format = "2";
window.google_conversion_color = "ffffff";
window.google_conversion_label = "CiaXCOXjzlcQy__EyQM";
window.google_remarketing_only = false;
$.getScript("http://www.googleadservices.com/pagead/conversion.js");
}
if (res == "yes") {
$('#success').fadeIn().delay(5000).fadeOut();
$('#regform')[0].reset();
<!-- Google Code for Lead Conversion Page -->
/* <![CDATA[ */
window.google_conversion_id = xxxxxxxxx;
window.google_conversion_language = "en";
window.google_conversion_format = "2";
window.google_conversion_color = "ffffff";
window.google_conversion_label = "CiaXCOXjzlcQy__EyQM";
window.google_remarketing_only = false;
/* ]]> */
$.getScript("//www.googleadservices.com/pagead/conversion.js");
window.scriptTag2 = document.createElement('noscript');
window.imgTag = document.createElement('img');
imgTag.height = 1;
imgTag.width = 1;
imgTag.border = 0;
imgTag.src = "//www.googleadservices.com/pagead/conversion/xxxxxxxxx/?label=CiaXCOXjzlcQy__EyQM&guid=ONscript=0";
}