|
|
|
|
var userscolarr= new Array();
function getstartpos()
{
url="getbattleusersposition.php?name="+window.nn;
function getXMLHttpRequest()
{
var xmlhttpreq=null;
if (window.XMLHttpRequest) //Mozilla, Safari & IE 7
{
xmlhttpreq = new XMLHttpRequest();
}
else if(window.ActiveXObject) // IE 6 and later
{
try
{
xmlhttpreq = new ActiveXObject('Msxml2.XMLHTTP');
}
catch(err)
{
xmlhttpreq = new ActiveXObject('Microsoft.XMLHTTP');
}
}
return xmlhttpreq;
}
function sendRequest(method, url, param)
{
var request = getXMLHttpRequest();
request.open(method, url, true);
request.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded');
request.onreadystatechange = function()
{
handleAjaxResponse(request);
};
request.send(param);
}
function isSuccess(request)
{
return request.status == 0 || (request.status >= 200 && request.status < 300);
}
function handleAjaxResponse(request)
{
if(request.readyState == 4)
{
if(isSuccess(request))
{
var responseXML = request.responseXML;
var root = responseXML.getElementsByTagName('response').item(0);
var responseID = Array();
var responseValue = Array();
var usersaa= new Array();
for (var iNode = 0; iNode < root.childNodes.length; iNode++)
{
var node = root.childNodes.item(iNode);
for (ik = 0; ik < node.childNodes.length; ik++)
{
var block = node.childNodes.item(ik);
if (block.nodeType != 1)
continue;
switch(block.nodeName)
{
case "names":
usersaa[block.firstChild.nodeValue]= new Array();
persname=block.firstChild.nodeValue;
userscolarr[ik]=block.firstChild.nodeValue;
alert("userscolarr fist="+userscolarr[0]);
break;
case "position":
var flpos=parseFloat(block.firstChild.nodeValue);
usersaa[persname]['persX']=cell[flpos]['x']-10;
usersaa[persname]['persY']=cell[flpos]['y']-70;
break;
}
}
}
for(ik=0; responseID.length; ik++)
{
document.getElementById(responseID.pop()).innerHTML = responseValue.pop();
}
}
}
}
sendRequest('GET', url, null);
};
function map_array()
{
getstartpos();
var a=1;
var m='';
while (a<155)
{
m+='<img src="no1.gif" alt='+a+' id='+a+' style="position: absolute; left: '+cell[a]['x']+'px; top:'+cell[a]['y']+'px;" onMouseOver="kurin('+a+')" onMouseOut="kurout('+a+')" onmouseup="move('+a+')">';
a=a+1;
}
map_out('battlediv',m);
alert("userscolarr="+userscolarr[0]);
|
для чего эта часть кода-не спрашивайте.излагаю проблемму:в функции getstartpos() в массив userscolarr мы добавляем имена.на данный момент туда вносится всего одно имя,и оно "1".
тут alert("userscolarr fist="+userscolarr[0]); выводится нормально userscolarr fist=1
но вот тут alert("userscolarr="+userscolarr[0]) ,это в конце кода,выводится userscolarr=undefined
может быть что скрипт не дожидается завершения функции getstartpos() и идет дальше,и соответственно не знает значение userscolarr[0],или этот массив каким-то чудом обнуляется? | |
|
|
|
|
|
|
|
для: sanitar
(12.06.2009 в 19:35)
| | >может быть что скрипт не дожидается завершения функции getstartpos() и идет дальше,и соответственно не знает значение userscolarr[0]
совершенно верно.
http://xmlhttprequest.ru/
...
Асинхронный XMLHttpRequest
Этот пример делает то же самое, но асинхронно, т.е браузер не ждет выполнения запроса для продолжения скрипта. Вместо этого к свойству onreadystatechange подвешивается функция, которую запрос вызовет сам, когда получит ответ с сервера.
var xmlhttp = getXmlHttp()
xmlhttp.open('GET', '/xhr/test.html', true);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
if(xmlhttp.status == 200) {
alert(xmlhttp.responseText);
}
}
};
xmlhttp.send(null);
|
Асинхронность включается третьим параметром функции open. В отличие от синхронного запроса, функция send() не останавливает выполнение скрипта, а просто отправляет запрос.
... | |
|
|
|