【问题标题】:How to reload js script after ajax call?ajax调用后如何重新加载js脚本?
【发布时间】:2015-04-16 13:20:18
【问题描述】:

我有一个名为admin_order.js 的脚本,它运行良好。由于某个插件在加载 ajax 内容后加载 ajax 内容admin_order.js 现在不起作用。

我在响应函数中试过这个,但没有成功。

$.getScript("../../themes/mywebsite/js/admin_order.js");

如何重新加载脚本?

【问题讨论】:

  • 那么admin_order.js在服务器上是否因为ajax ca;;s而被修改?如果不是,我会进一步调查您的脚本停止工作的原因。如果是,那么也许你应该重构你的代码。
  • 不,没有任何修改。 ajax 调用返回的 html 替换了 admin_order.js 附加事件的 html,但这些元素的类名保持不变。有什么想法吗?
  • 那你为什么不只用ajax调用来查询数据并在前端更新内容呢?您当前的解决方案会部分重新加载页面,我猜重新加载页面 (location.reload();) 不起作用,因为您最终处于错误状态。

标签: jquery


【解决方案1】:

我认为这个问题必须换一种方式处理;但如果你不能在插件代码中处理这个问题,你可以:

  1. 向脚本元素添加一个 id,例如 myAdminOrderScript
  2. getScript 之前删除脚本元素
  3. getScriptsuccess 函数中为最后一个脚本元素添加一个Id

喜欢:

<script id="myAdminOrderScript" src="../../themes/mywebsite/js/admin_order.js"></script>

  function reloadScript() {
    $('#myAdminOrderScript').remove();
    $.getScript("../../themes/mywebsite/js/admin_order.js", function() {
      $('script:last').attr('id', 'myAdminOrderScript');
    });
  }

【讨论】:

  • 谢谢,我把这个放在ajax响应函数里了吗?
  • 可以,或者以getScript(taht是ajax的快捷方式)为例
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多