php – 在通过AJAX响应发送的页面上执行javascript函数
发布时间:2020-12-13 21:49:07 所属栏目:PHP教程 来源:网络整理
导读:我想执行一个通过服务器的 AJAX请求发送的函数.函数体不在调用页面中.例如:(完整代码如下) 1.调用PHP脚本: script function fun() { try{ // Opera 8.0+,Firefox,Safari ajaxRequest = new XMLHttpRequest(); } catch (e){ // Internet Explorer Browsers t
我想执行一个通过服务器的
AJAX请求发送的函数.函数体不在调用页面中.例如:(完整代码如下)
1.调用PHP脚本: <script> function fun() { try{ // Opera 8.0+,Firefox,Safari ajaxRequest = new XMLHttpRequest(); } catch (e){ // Internet Explorer Browsers try{ ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try{ ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e){ // Something went wrong alert("Your browser broke!"); return false; } } } ajaxRequest.onreadystatechange = function(){ if(ajaxRequest.readyState == 4){ document.getElementById("rslt").innerHTML = ajaxRequest.responseText; } } ajaxRequest.open("GET","ajax_js2.php",true); ajaxRequest.send(null); } </script> <input type="button" onclick="fun()"> <div id="rslt"> </div> 2.ajax_js2.php脚本: <script> function test() { alert("Hello"); } </script> <span onclick="test()">Test AJAX</span> 我知道在调用脚本中放置“test”的函数定义会做.但是我想把它放在第二个脚本中.我该怎么办?服务器返回span作为对客户端的响应.在单击跨度“Test AJAX”时,应该调用该函数. 解决方法
<脚本>除非运行eval(),否则不会执行插入DOM的标记.在这里阅读更多:
Can scripts be inserted with innerHTML?
因此,在您的情况下,当您尝试单击span时,test()将是未定义的,因为脚本代码尚未执行(因此从未定义测试函数). 您可以使用类似的东西来解决它(在DOM注入之后): var scripts = document.getElementById("rslt").getElementsByTagName("script"); for( var i=0; i<scripts.length; i++ ) { eval(scripts[i].innerText); } (p.s.eval并不邪恶) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |