如何更改外部脚本URL onclick?

时间:2013-05-26 07:33:01

标签: javascript ajax jquery xhtml

我一直在努力为我的问题找到解决方案。我不是一个有javascript经验的人,但我正在寻找一种方法来轻微改变外部js url,具体取决于ahref上的onclick事件。

现在我的脑袋中有这个标签:

<script type="text/javascript" src="http://www.domain.com/loader.php?GID=126&go=&sid="></script>

我希望根据锚标记上的onclick将SID参数设置为1或2。使用这段代码调用加载器,但是在调用加载器之前,SID必须在右侧更改。

<a href="/#download" onclick="javascript:Load_126(); return false;">

有没有人可以告诉我是否可能?也许我指向正确的方向?

此致

Sedoc94

编辑1 :我一直指向一个方向,并认为我可以用jQuery.getScript()完成这项工作但仍然不知道我应该如何利用它来处理我的情况。

编辑2 :由于脚本需要从外部域中提取,我必须使用$ .ajax()函数。

现在我有:

function loadGame(sid){
    $.ajax({
      url: 'http://www.domain.com/loader.php?GID=126&go=&sid='+sid,
      dataType: "script",
      crossDomain: true,
      success: gLoad_12603()
    });
}

使用ahref onclick我正在调用loadGame函数,但控制台说:Uncaught ReferenceError: gLoad_12603 is not defined。它应该工作。但我猜它以某种方式给出了这个错误,因为该函数只存在于从外部URL返回的脚本代码中。

我有什么想法可以让它发挥作用吗?

3 个答案:

答案 0 :(得分:2)

您需要提供将在AJAX请求完成时执行的成功回调。现在,您实际上是在使用parathesis gliad_12603()并在启动AJAX请求之前执行该函数。您不能只删除该parathesis,因为jQuery可能会在实际启动AJAX请求之前尝试获取对gLoad_12603函数的引用。所以你必须在函数中包含对gLoad_12603()的调用,以确保一切正常:

function loadGame(sid){
    $.ajax({
      url: 'http://www.domain.com/loader.php?GID=126&go=&sid='+sid,
      dataType: "script",
      crossDomain: true,
      success: function() {
          gLoad_12603();
      }
    });
}

答案 1 :(得分:1)

jQuery.getScript()

function loadScript(sid) {
    $.getScript("http://www.domain.com/loader.php?GID=126&go=&sid="+sid, function(script, textStatus, jqxhr) {
        //code you want to be executed after the script is loaded inside the page
        //you can delete this callback if you don't need it
    });
}

并以这种方式使用它,更改每个锚点上的sid以加载不同的脚本:

<a href="/#download" onclick="javascript:loadScript(126); return false;">
<a href="/#download" onclick="javascript:loadScript(127); return false;">

答案 2 :(得分:1)

尝试删除“success:gLoad_12603()”中的括号“()”。