Par*_*med 3 javascript php ajax
我想执行一个通过服务器的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>
Run Code Online (Sandbox Code Playgroud)
2.ajax_js2.php脚本:
<script>
function test()
{
alert("Hello");
}
</script>
<span onclick="test()">Test AJAX</span>
Run Code Online (Sandbox Code Playgroud)
我知道在调用脚本中放置"test"的函数定义会做.但是我想把它放在第二个脚本中.我该怎么办?服务器返回span作为对客户端的响应.在单击跨度"Test AJAX"时,应该调用该函数.
<script>除非你运行,否则不会执行插入DOM的标记eval().在这里阅读更多内容:可以使用innerHTML插入脚本吗?
因此,在您的情况下,test()当您尝试单击span时将未定义,因为脚本代码尚未执行(因此从未定义该test函数).
您可以使用类似的东西来解决它(在DOM注入之后):
var scripts = document.getElementById("rslt").getElementsByTagName("script");
for( var i=0; i<scripts.length; i++ ) {
eval(scripts[i].innerText);
}
Run Code Online (Sandbox Code Playgroud)
(PS eval是不是邪)
| 归档时间: |
|
| 查看次数: |
5444 次 |
| 最近记录: |