Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当innerHtml使用Ajax更改时,如何调用javascript函数来运行?_Javascript_Html_Ajax - Fatal编程技术网

当innerHtml使用Ajax更改时,如何调用javascript函数来运行?

当innerHtml使用Ajax更改时,如何调用javascript函数来运行?,javascript,html,ajax,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> ... ajaxfunct

我正在使用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


提前谢谢你

如果要异步执行此操作,最简单的方法是只使用库。Prototype和jQuery是不错的选择。它们都提供了接受回调选项的AJAX函数,因此您可以在许多不同的情况下呈现不同的输出


例如,您可以在成功时执行一些操作,在失败时执行另一个操作,在操作进行时执行另一个操作,或者对每个HTML状态代码执行操作。

我认为,假设您的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事件绑定):

有关更全面的示例,请发布
ajaxfunction
的代码

<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;
    });
  };
  // .... 
};