2

我写了一个名为 getContent() 的 ajax 函数,结构如下

getContent(whichcontent){//代码在这里获取内容}

具体代码在这里:

function getXmlHttpRequestObject() {
  if (window.XMLHttpRequest) {
    return new XMLHttpRequest(); //Not IE
  } else if(window.ActiveXObject) {
    return new ActiveXObject("Microsoft.XMLHTTP"); //IE
  } else {
    alert("Your browser doesn't support the XmlHttpRequest object.  Better upgrade to Firefox.");
  }
}

var receiveReq = getXmlHttpRequestObject();

var page_id = 1;

function getContent(which_page,append){
  if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {    

    receiveReq.open("GET", 'spt/page_'+which_page, true);//get the text file

    receiveReq.onreadystatechange = function(){
        handleGetContent(which_page,append);
    }
    receiveReq.send(null);
  }     
}

function handleGetContent(which_page,append){
    if (receiveReq.readyState == 4) {        
        if(append == 1){
            $('#container').append("<div class='page' id='page_"+which_page+"'><div class='title'>围城</div><p>" + receiveReq.responseText + "</p><div class='pagenum'>"+which_page+"</div></div>");

        }
        if(append == 0){
          $('#container').prepend("<div class='page' id='page_"+which_page+"'><div class='title'>围城</div><p>" + receiveReq.responseText + "</p><div class='pagenum'>"+which_page+"</div></div>");          
        }
    }
}

我像这样使用了getContent

$(document).ready(function (){
    getContent(1,1);
    getContent(2,1);
}

问题是我只得到一个......而另一个ID为page_2的没有出现。我想知道ajax函数是否只能在js函数中调用一次,或者我只是让ajax函数出错。来人帮帮我!!提前致谢。

4

2 回答 2

0

XMLHttpRequest 调用是异步的,因此如果您只使用一个请求对象,则第二个调用getContent将被忽略,因为receiveReq.readyState既不是 0 也不是 4。

于 2013-02-01T08:25:21.293 回答
0

我认为代码还可以,但是如果您对 ajax 有疑问,则可以使用jquery它,如果没有,则可以为 ajax 使用单个函数,例如:http ://www.w3schools.com/ajax/ajax_aspphp.asp

或者试试这个代码

// change the function like
function getContent(which_page,append){
    var receiveReq = getXmlHttpRequestObject();// Create object here

    receiveReq.open("GET", 'spt/page_'+which_page+'.txt', true);//get the text file
    //write the extension of the file
    receiveReq.onreadystatechange = function(){
        if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {    
            handleGetContent(receiveReq,which_page,append);
        }

    }    
    receiveReq.send(null); 
}
// add an extra parameter in this function
function handleGetContent(receiveReq,which_page,append){
    if (receiveReq.readyState == 4) {        
        if(append == 1){
            $('#container').append("<div class='page' id='page_"+which_page+"'><div class='title'>围城</div><p>" + receiveReq.responseText + "</p><div class='pagenum'>"+which_page+"</div></div>");

        }
        if(append == 0){
          $('#container').prepend("<div class='page' id='page_"+which_page+"'><div class='title'>围城</div><p>" + receiveReq.responseText + "</p><div class='pagenum'>"+which_page+"</div></div>");          
        }
    }
}
$(document).ready(function (){
    getContent(1,1);
    getContent(2,1);
});// change this line also
于 2013-02-01T08:31:14.757 回答