javascript - 当innerHtml随Ajax发生变化时,如何调用javascript函数来运行?

标签 javascript html ajax

我正在使用 Ajax 通过在链接上使用 onclick 来更改 div 的innerHtml。从服务器检索文件并替换 div 的内容后,我需要调用 javascript 函数。我该怎么做?

<div id="thisDiv">
<a href="this.php" onclick="ajaxfunction('thisfile.php','thisDiv');return false;">link</a>
...
</div>

ajaxfunction函数将thisDiv的innerHtml替换为thisfile.php。

提前谢谢您!

最佳答案

我认为,假设您的 AJAX 请求是异步的,最好的方法是向您的函数添加一个回调参数,该参数将在请求结束时执行。

由于您没有提及任何 JavaScript 库,也没有发布您的 ajaxfunction,我想您可能正在执行原始 XHR 请求,如果是这样,您可以例如:

function ajaxfunction (url, elementId, callback) { 
  var xhr = new XMLHttpRequest();
  xhr.open("GET", url, true);
  xhr.onreadystatechange = function(){
    if ( xhr.readyState == 4 ) {
      if ( xhr.status == 200 ) {
        document.getElementById(elementId).innerHTML = xhr.responseText;
        callback(); // the content has been loaded to the DOM, executing callback
      } else {
        alert('error');
      }
    }
  };
  xhr.send(null);
}

您可以使用这样的函数(请注意,我根本不建议在 HTML 上使用内联 JavaScript 事件绑定(bind)):

<a href="this.php" 
onclick="ajaxfunction('thisfile.php','thisDiv', otherFn);return false;">link</a>

推荐方式:

<a href="this.php" id="linkId">link</a>
<小时/>
window.onload = function () {
  // Event binding...
  document.getElementById('linkId').onclick = function () {
    ajaxfunction('thisfile.php','thisDiv', function () {
      alert('Content retrieved, this is the callback!');
      return false;
    });
  };
  // .... 
};

要获得更全面的示例,请发布 ajaxfunction 的代码。

关于javascript - 当innerHtml随Ajax发生变化时,如何调用javascript函数来运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1384810/

相关文章:

javascript - 如果不需要 Ajax,如何从 promise 中返回?

javascript - 有没有一种非常简单的方法可以使用 jQuery/AJAX 更新 Perl Dancer 中的页面?

javascript - 使用橡皮擦时保留背景图像

javascript - 出现错误时,ajax 无法清除我的 ul

html - 在移动设备和桌面设备之间制作响应式按钮

删除特定字段的Javascript方法

c# - 在 AJAX 成功函数中解析返回的 C# 列表

javascript - ajax 在远程服务器上不起作用

javascript - 返回数组中每组具有最高属性值的对象

html - 自定义元素符号图像位置偏离文本