請教AJAX參數接收問題
大家好小弟不才要請教高手一些問題這是一段AJAX的函式--
其中num,num2,num3--真的是有抓到值了--這點是可以確定的
[code js]
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;
}
}
}
[/code]
我自己測試過
document.getElementById("idbau1"+num3).innerHTML=result;
是不行的 因為你的 num3 是在 Buildkey() 裡面,所以 catchGetTime 無法接收到。有幾種方式可以達到,例如把 num3 變成全域變數,不過不建議這樣做。另一種方式是把 num3 傳入 catchGetTime(),例如:
[code js]
xmlHttp.onreadystatechange = function(num3) {
catchGetTime(num3);
};
[/code]
catchGetTime() 就可以接到這個值了... 照您這樣登打後
先將
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是真的有值的)
還是說有其它映對的寫法呢
修改過後的寫法
[code js]
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;
}
}
}
[/code] sorry, 應該是我弄錯了, 試試看這樣:
[code js]
xmlHttp.onreadystatechange = function() {
catchGetTime(num3);
};
[/code]
以上是用到了 JavaScript 的 closure 的特性,num3 可以透過那個 function 定義的上下文取得,而非用傳入的方式取得。 已經成功了
再次謝謝您的幫助
說真的我還真不知道closure是什麼意思
不過我會再努力的
再次感謝
頁:
[1]