Во-первых, я бы согласился с Shyam, а также установил Firebug для Firefox; это будет огромной помощью для отладки JavaScript.
в любом случае, линия
xmlHttp.onreadystatechange = FetchComplete(layername);
назначит результат FetchComplete(layername)
на xmlHttp.onreadystatechange
, а это не то, что вам нужно. Это должно быть
xmlHttp.onreadystatechange = FetchComplete;
Но тогда у вас есть проблема прохождения layername
.
Если вы определяете onreadystatechange как анонимную внутреннюю функцию, вы можете легко использовать переменные, определенные вне ее, чтобы вы могли сделать что-то вроде этого:
function GetAuctionData(pk) {
var xmlHttp=GetXmlHttpObject();
var layer = "Layer2";
if(xmlHttp==null) {
alert("Your browser is not supported?");
}
var url="get_auction.php?";
url=url+"cmd=GetAuctionData&pk="+pk;
url=url+"&sid="+Math.random();
xmlHttp.onreadystatechange = function() {
if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
document.getElementById(layer).innerHTML=xmlHttp.responseText
} else if (xmlHttp.readyState==1 || xmlHttp.readyState=="loading") {
document.getElementById(layer).innerHTML="loading"
}
};
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}
layer
определен как локальная переменная в GetAuctionData (), но доступен в анонимной функции, потому что вы создаете Closure. Обратите внимание, что я не тестировал вышеуказанную функцию, но она должна работать в принципе.