返回列表 發帖

請教AJAX參數接收問題

大家好
小弟不才要請教高手一些問題這是一段AJAX的函式--
其中num,num2,num3--真的是有抓到值了--這點是可以確定的
function Buildkey(num,num2,num3)
{
  var requestString="abc.php?colorid="+num+"&styleid="+num2+"&level="+num3;
  xmlHttp.open('GET',requestString,true);
  xmlHttp.onreadystatechange=catchGetTime;
  xmlHttp.send(null);
}

function catchGetTime()
{

  if (xmlHttp.readyState==4 || xmlHttp.readyState=='complete')
  {
  
    if (xmlHttp.status == 200)
    {
      var result = xmlHttp.responseText;
      //現在idbau1是寫死的--我想讓num3(是數字的類型)黏在idbau的後面(動態接收後會是idbau1..2..3之類的)--可是我真的不知道要怎樣用語法來表示
      document.getElementById("idbau1").innerHTML=result;
    }
  
  }

}
我自己測試過
document.getElementById("idbau1"+num3).innerHTML=result;
是不行的
邁向神乎其技的境界^^

因為你的 num3 是在 Buildkey() 裡面,所以 catchGetTime 無法接收到。有幾種方式可以達到,例如把 num3 變成全域變數,不過不建議這樣做。另一種方式是把 num3 傳入 catchGetTime(),例如:
xmlHttp.onreadystatechange = function(num3) {
  catchGetTime(num3);
};
catchGetTime() 就可以接到這個值了...
To infinity and beyond!

TOP

照您這樣登打後
先將
xmlHttp.onreadystatechange=catchGetTime;
註解掉~並更換成
xmlHttp.onreadystatechange = function(num3)
{  
catchGetTime(num3);  
};


document.getElementById("idbau"+num3).innerHTML=result;
不變

結果在FF瀏覽器的錯誤主控台中出現了錯誤訊息
document.getElementById("idbau" + num3) is null
這是代表num3是null(可能我程式有錯而導致的錯誤嗎)(但num3是真的有值的)
還是說有其它映對的寫法呢

修改過後的寫法
function Buildkey(num,num2,num3)
{
var requestString="order_input_querybau1.php?colorid="+num+"&styleid="+num2+"&level="+num3;
xmlHttp.open('GET',requestString,true);
//xmlHttp.onreadystatechange=catchGetTime;
xmlHttp.onreadystatechange = function(num3) 
{  
catchGetTime(num3);  
};
xmlHttp.send(null);
}

function catchGetTime(num3)
{
 
 if (xmlHttp.readyState==4 || xmlHttp.readyState=='complete')
 {
 
  if (xmlHttp.status == 200) 
  {
  var result = xmlHttp.responseText;
  document.getElementById('idbau'+num3).innerHTML=result;        
  }
 
 }

}
邁向神乎其技的境界^^

TOP

sorry, 應該是我弄錯了, 試試看這樣:
xmlHttp.onreadystatechange = function() {
  catchGetTime(num3);
};
以上是用到了 JavaScript 的 closure 的特性,num3 可以透過那個 function 定義的上下文取得,而非用傳入的方式取得。
To infinity and beyond!

TOP

已經成功了
再次謝謝您的幫助
說真的我還真不知道closure是什麼意思
不過我會再努力的
再次感謝
邁向神乎其技的境界^^

TOP

返回列表 回復 發帖