Javascript 另一种ajax调用风格
我正在用纯Javascript的AJAX调用做一些实验,没有JQuery。我想知道是否可以像这样填充DIV标记:Javascript 另一种ajax调用风格,javascript,ajax,Javascript,Ajax,我正在用纯Javascript的AJAX调用做一些实验,没有JQuery。我想知道是否可以像这样填充DIV标记: <script type="text/javascript"> function call_test() { document.getElementById("myId").innerHTML = ajax_call("example.php?id=1") ; } </script> <body> <input type="but
<script type="text/javascript">
function call_test() {
document.getElementById("myId").innerHTML = ajax_call("example.php?id=1") ;
}
</script>
<body>
<input type="button" onClick="call_test()" value"Test">
<div id="myId">Result should be here</div>
远程文件:
<?php
echo "<h1>Jus an experiment</h1>";
?>
由于AJAX请求的异步性质,它将无法工作。
ajax\u调用
方法将在服务器响应html之前返回,这就是为什么您会得到undefined
这里的解决方案是使用回调对ajax响应进行后处理,如下所示
function ajax_call(remote_file, callback) {
var $http, $self = arguments.callee;
if (window.XMLHttpRequest) {
$http = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
$http = new ActiveXObject('Msxml2.XMLHTTP');
} catch (e) {
$http = new ActiveXObject('Microsoft.XMLHTTP');
}
}
if ($http) {
$http.onreadystatechange = function() {
if (/4|^complete$/.test($http.readyState)) {
if (callback)
callback(http.responseText);
}
};
$http.open('GET', remote_file, true);
$http.send(null);
}
}
及
document.getElementById(“myId”).innerHTML=ajax\u调用(“example.php?id=1”)
表示ajax\u调用
不应使用任何异步请求方法。请看一看JavaScript或类似主题中的同步请求。非常感谢您的回复,让我再次介绍:p
function ajax_call(remote_file, callback) {
var $http, $self = arguments.callee;
if (window.XMLHttpRequest) {
$http = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
$http = new ActiveXObject('Msxml2.XMLHTTP');
} catch (e) {
$http = new ActiveXObject('Microsoft.XMLHTTP');
}
}
if ($http) {
$http.onreadystatechange = function() {
if (/4|^complete$/.test($http.readyState)) {
if (callback)
callback(http.responseText);
}
};
$http.open('GET', remote_file, true);
$http.send(null);
}
}
function call_test() {
ajax_call("example.php?id=1", function(html) {
document.getElementById("myId").innerHTML = html
});
}