7

我一直在努力为我的问题找到解决方案。我不是 javascript 经验丰富的人,但我正在寻找一种方法来根据 ahref 上的 onclick 事件稍微更改外部 js url。

现在我的头标签中有这个:

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

我希望 SID 参数基于对锚标记的 onclick 设置为 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 返回的脚本代码中。

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

4

3 回答 3

2

您需要提供将在 AJAX 请求完成时执行的成功回调。现在,您实际上是在说 gLoad_12603() 并在启动 AJAX 请求之前执行该函数。您不能只删除对偶,因为 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();
      }
    });
}
于 2013-06-09T10:30:43.923 回答
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;">
于 2013-05-26T07:59:31.563 回答
1

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

于 2013-06-07T04:00:09.073 回答