2016-04-14 70 views
0

我有一个js AJAX获取一些内容并将其插入到名为content_holder的html元素中。我想在使用ajax更新内容后立即调用一个函数。我试图将<script>元素放入添加的内容中,但看起来好像没有被执行。所以我希望这里有人会知道这个解决方案。 (我不使用jQuery)将ajax内容应用到元素后执行js函数

function ajax(instruction, push, url, callback){ 
 
\t 
 
\t var xmlhttp; // the object for the httprequest 
 
\t 
 
\t if (window.XMLHttpRequest) { 
 
      // code for IE7+, Firefox, Chrome, Opera, Safari 
 
      xmlhttp = new XMLHttpRequest(); 
 
     } else { 
 
      // code for IE6, IE5 
 
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
 
     } 
 
\t \t 
 
\t \t 
 
     xmlhttp.onreadystatechange = function() { // every time the readystate changes 
 
\t \t 
 
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { // status 200 = sucessfull page! NOT 404! // 1 2 3 4 are states of the request (4 is when it's done) 
 
\t \t \t 
 
\t \t \t  var content = xmlhttp.responseText + "<script>ajaxDone();</script>"; 
 
\t \t \t 
 
\t \t \t \t callback(content); // goes to the callback function (from the argument "callback") and then passes the xmlhttp 
 
      } 
 
\t \t \t 
 
     }; 
 
     xmlhttp.open(instruction,url,true); // sends a the var q to the next php file 
 
     xmlhttp.send('');    // Sends the request 
 
\t 
 
\t 
 
\t  if(push == true){ // Change the link to the url of the ajax with 
 

 
\t \t  var urlPath = window.location.protocol + "//" + window.location.host + window.location.pathname; // where the host is on 
 
\t \t 
 
\t \t 
 
\t \t  if(url == "home.php"){ // If it's the starting page REMOVE THE ?p= !! 
 
       var urlPath = window.location.protocol + "//" + window.location.host + window.location.pathname; 
 
       window.history.pushState({path:urlPath},'','./'); // an empty url push \t (!REMOVE THE DOT WHEN THE SITE IS HOSTED PROPERLY) \t \t 
 
\t \t \t  return; // exit's the function 
 
\t \t  }else{} 
 
\t \t 
 
\t \t 
 
      var newLink = "?p=" + url; // Gives us the link we want except that we don't want the .php 
 
      newLink = newLink.substring(0, newLink.indexOf('.')); // makes a new string with character 0 to the dot! Will not include the ending of the file 
 

 
      
 
\t \t window.history.pushState({path:urlPath},'',newLink); // the push 
 
\t \t 
 
     } \t 
 
\t \t else{} 
 
\t 
 
}
<p><a href="?p=toplists" onclick="if(useAjax == true){ ajax('GET', true, 'toplists.php', function(content){ document.getElementById('content_holder').innerHTML = content; }); return false;}">Top Lists</a></p> 
 

 

 
<div id="content_holder"></div>

+1

您需要将您的(相关)代码添加到问题中。 – Andy

回答

1

看看这个话题:How to make an AJAX call without jQuery?

你可以像水木清华:

xmlhttp.onreadystatechange = function() { 
    if (xmlhttp.readyState == XMLHttpRequest.DONE) { 
     if(xmlhttp.status == 200){ 
      document.getElementById("myDiv").innerHTML = xmlhttp.responseText; 
      //here you call whichever function you want 
     } 
    ..... 
} 

希望它可以帮助

+0

感谢它现在的作品!我已经知道它,并有一个功能,这也包括我的回调函数。所以我只是添加了我想在回调之后执行的新功能。现在我感觉有点愚蠢 –

相关问题