2013-06-19 55 views
1

大家早上好,我有這樣的代碼,把從W3Schools的AJAX - 多個div的PHP更新

var xmlhttp 

function showCustomer(str,str2) 
{ 
xmlhttp=GetXmlHttpObject(); 
if (xmlhttp==null) 
    { 
    alert ("Your browser does not support AJAX!"); 
    return; 
    } 



var url="/Script/ajaxdb/aaaaa.php"; 
url=url+"?id="+str; 
url=url+"&id2="+str2; 
url=url+"&sid="+Math.random(); 
xmlhttp.onreadystatechange=stateChanged; 
xmlhttp.open("GET",url,true); 
xmlhttp.send(null); 
} 

function stateChanged() 
{ 
if (xmlhttp.readyState==4) { 



    document.getElementById("TXTHINT").innerHTML=xmlhttp.responseText; 





    } 
} 

function GetXmlHttpObject() 
{ 
if (window.XMLHttpRequest) 
    { 
    // code for IE7+, Firefox, Chrome, Opera, Safari 
    return new XMLHttpRequest(); 
    } 
if (window.ActiveXObject) 
    { 
    // code for IE6, IE5 
    return new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
return null; 
} 

我想改變ID名稱爲

 document.getElementById("TXTHINT").innerHTML=xmlhttp.responseText; 

我想有類似

document.getElementById("TXTHINT1").innerHTML=xmlhttp.responseText; 

    document.getElementById("TXTHINT2").innerHTML=xmlhttp.responseText; 

    document.getElementById("TXTHINT3").innerHTML=xmlhttp.responseText; 

等..

我試圖

document.getElementById("TXTHINT"+str).innerHTML=xmlhttp.responseText; 

因爲我需要的變量str的值,有ID名稱爲TXTHINT1,TXTHINT2,TXTHINT3等等....

但ID不能正常工作。

有人可以幫助我嗎?

+2

您是否嘗試'console.log(str)'並查看它的值? –

+0

沒有抱歉,我不是那麼習慣的javascript/ajax。用於調試以查看發生了什麼? – user2501015

+0

GoogleChrome JAvascript控制檯,告訴我Uncaught ReferenceError:str沒有定義 – user2501015

回答

0

你應該指定一個全局變量來在其他函數中訪問它。

var xmlhttp 
var str_global; 
function showCustomer(str,str2) 
{ 
    str_global=str; 
    xmlhttp=GetXmlHttpObject(); 
    if (xmlhttp==null) 
     { 
     alert ("Your browser does not support AJAX!"); 
     return; 
     } 



    var url="/Script/ajaxdb/aaaaa.php"; 
    url=url+"?id="+str; 
    url=url+"&id2="+str2; 
    url=url+"&sid="+Math.random(); 
    xmlhttp.onreadystatechange=stateChanged; 
    xmlhttp.open("GET",url,true); 
    xmlhttp.send(null); 
} 

function stateChanged() 
{ 
    if (xmlhttp.readyState==4) { 

     document.getElementById("TXTHINT"+str_global).innerHTML=xmlhttp.responseText; 

     } 
} 
+0

非常感謝。我嘗試過這樣做,但也許我做錯了。現在它可以工作,非常感謝 – user2501015

1

我希望爲所有要更改的元素設置一個屬性attribut。 例如:

<div id="TXTHINT" class="txthints"></div> 
<div id="TXTHINT1" class="txthints"></div> 

現在你可以很容易地通過與類的所有元素循環atrribut「txthints」,並設置內容。

var divsToChange = document.getElementsByClassName('txthints'); 
var newContent = xmlhttp.responseText; 

for(i=0; i < divsToChange.length; ++i) { 
divsToChange[i].innerHTML = newContent; 
} 
+0

謝謝,但是取代TXTHINT(1,2,3),我需要TXTHINT(str值) – user2501015

0

試試這個

xmlHttp.onreadystatechange=function() {

 stageChanged(str, str2); 
    }; 
xmlHttp.open("GET", handlingURL, true); 
xmlHttp.send(null); } 

function stageChanged(str, str2) {

if(xmlHttp.readyState==4) 
    { 
     document.getElementById("TXTHINT"+str).innerHTML=xmlhttp.responseText; 
     //do something with the response 
    } } 

STR沒有被定義爲一個全球性的參數,所以它不能夠在響應函數訪問,你需要通過str作爲參數。