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);
}

問題は、1つしか取得できないことです...そして、id page_2のもう1つは表示されません。ajax関数をjs関数で1回しか呼び出せないのか、それともajax関数を間違ってしまったのか疑問に思っています。誰か助けて!!前もって感謝します。

4

2 に答える 2

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 に答える
0

XMLHttpRequest 呼び出しは非同期であるため、1 つの要求オブジェクトのみを使用する場合、2 番目の呼び出しは 0 でも 4 でもないgetContentため無視されます。receiveReq.readyState

于 2013-02-01T08:25:21.293 に答える