Javascript 如何在单击时更改外部脚本url?

Javascript 如何在单击时更改外部脚本url?,javascript,ajax,jquery,xhtml,Javascript,Ajax,Jquery,Xhtml,我一直在努力寻找解决我的问题的办法。我不是一个有javascript经验的人,但我正在寻找一种方法,根据ahref上的onclick事件稍微更改外部JSURL 现在我的头上有这样的标签: 我希望基于锚标记上的onclick将SID参数设置为1或2。用这段代码调用加载程序,但在调用加载程序之前,SID必须向右更改 有没有人能告诉我这是否可能?也许能给我指出正确的方向 问候, 塞多克94 编辑1:我已经指出了一个方向,我想我可以用jQuery.getScript()来完成这项工作,但仍然不知道应

我一直在努力寻找解决我的问题的办法。我不是一个有javascript经验的人,但我正在寻找一种方法,根据ahref上的onclick事件稍微更改外部JSURL

现在我的头上有这样的标签:

我希望基于锚标记上的onclick将SID参数设置为1或2。用这段代码调用加载程序,但在调用加载程序之前,SID必须向右更改

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

问候,

塞多克94

编辑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函数,但控制台显示:
uncaughtreferenceerror:gLoad_12603未定义
。它应该是有效的。但我猜它会以某种方式出现这个错误,因为该函数只存在于从外部URL返回的脚本代码中

有什么办法让它工作吗?

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

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


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

您需要提供一个成功回调,该回调将在AJAX请求完成时执行。现在,您实际上是在用parathesis表示gLoad_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();
      }
    });
}

我认为不可能动态更改脚本src,因为JS代码需要重新加载。为什么不使用简单的AJAX来完成这个任务呢?查看ReadyStateChange上ajax对象上的add eventhandler,但如果您使用jquery,请阅读此内容,我只是阅读了此内容,但它说我需要使用“成功”事件处理程序,我已经使用的?@LightStyle answer应该可以用。用他的答案有什么不起作用?顺便说一句,这里使用$.getScript或$.ajax,您似乎不想做任何更改这里有一个
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();
      }
    });
}