Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery更新脚本标记的src-使用jQuery重新加载脚本而不刷新页面_Javascript_Jquery_Html_Ajax_Forms - Fatal编程技术网

Javascript 使用jQuery更新脚本标记的src-使用jQuery重新加载脚本而不刷新页面

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加载

问题说明了一切。如何使用jQuery更新脚本标记的“src”。 比如说,我有一个剧本

 <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
便利方法。

最后,以下内容为我完成了任务。感谢并感谢他们的支持

在我以前的代码中,有两个问题

  • 我没有插入“img”元素和其他转换代码。(愚蠢的错误,但我是第一次使用转换代码。所以请原谅我)
  • 以默认格式插入“img”标记的src将导致错误。默认的
    &将在AJAX响应时呈现
    无效URL编码
    错误。谢谢你的帮助。而不是使用
    &
    ,像这样直接使用
    &
  • www.googleadservices.com/pagead/conversion/xxxxxxxxx/?label=ciaxcxjzlcqy\uuuuu EyQM&guid=ONscript=0

    这就是最终对我有用的东西

        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";                                  
    
        }