以下是我在HTML页面中使用的JavaScript代码
<script type="text/javascript">
function loadXMLDoc(HTTP)
{
var xmlHttp;
try {
xmlHttp=new XMLHttpRequest();
} catch (e) {
try {
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
alert("Your browser does not support AJAX!");
return false;
}
}
}
xmlHttp.onreadystatechange=function() {
if (xmlHttp.readyState==4) {
alert(xmlHttp.responseText);
}
}
var params ="dd=123";
xmlHttp.open("POST",HTTP,true);
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("Content-length", params.length);
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.send(params);
}
</script>
在下面的javascript我的魔杖中激活每个ajax函数
<script type="text/javascript">
// here i wand to send function together
return (loadXMLDoc('Page1.asp') && loadXMLDoc('Page2.asp') && loadXMLDoc('Page3.asp'));
</script>
但问题是我没有得到“返回”(意味着第二和第三功能不起作用)
只有第一个功能正常工作
希望得到您的回复
答案 0 :(得分:1)
你的函数loadXMLDoc()没有返回任何内容,在该函数的末尾添加“return true”。
xmlHttp.send(params);
return true;
}
请注意,loadXMLDoc()的真正返回意味着您已成功启动AJAX请求。它将在未来一段时间内完成,这将导致onreadystatechange被调用。因此,您可以并行启动多个AJAX请求。
如果您想按顺序进行多次AJAX调用,请尝试以下操作:
function doAjaxRequest( url, onreadystatechange )
{
var xmlHttp;
try {
xmlHttp=new XMLHttpRequest();
} catch (e) {
try {
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
alert("Your browser does not support AJAX!");
return false;
}
}
}
xmlHttp.onreadystatechange = onreadystatechange;
var params = "dd=123";
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("Content-length", params.length);
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.send(params);
}
function loadXMLDocs( HTTP )
{
var loadNextFile = function() {
if (HTTP.length != 0) {
var url = HTTP.unshift();
doAjaxRequest( url, onreadystatechange );
}
}
var onreadystatechange = function() {
if (this.readyState==4) {
alert(xmlHttp.responseText);
loadNextFile();
}
}
loadNextFile();
}
loadXMLDocs( ['Page1.asp', 'Page2.asp', 'Page3.asp'] );
答案 1 :(得分:1)
记得在声明中:
return (loadXMLDoc('Page1.asp') && loadXMLDoc('Page2.asp') && loadXMLDoc('Page3.asp'));
逻辑上转换为:
if (loadXMLDoc('Page1.asp')){
if (loadXMLDoc('Page2.asp')){
if (loadXMLDoc('Page3.asp')){
return true;
}
}
}
return false;
因此,只有当前一个函数返回true时,才会调用每个连续的loadXMLDoc()函数调用。
答案 2 :(得分:0)
<script type="text/javascript">
function loadXMLDoc(HTTP){
var xmlHttp;
try{
xmlHttp=new XMLHttpRequest(); }
catch (e){
try{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}catch (e){
try{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}catch (e){
alert("Your browser does not support AJAX!");
return false;
}
}
}
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4){
alert(xmlHttp.responseText);
}
}
var params ="dd=123";
xmlHttp.open("POST",HTTP,true);
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("Content-length", params.length);
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.send(params);
return true;
}
</script>