передавая глобальный аргумент функции с измененным состоянием - PullRequest
1 голос
/ 28 июня 2011

привет, у меня есть ajax-код для удаления строки из БД

имеет аргумент id для идентификации этой строки

Я хочу иметь возможность использовать это после того, как удаление сделано в функции stateChangedd

function stateChangedd()
{
  if (xmlhttp.readyState==4)
  {
alert('done');
alert(id);

  }
}

но он говорит, что идентификатор не определен

вот полный код

function deletrow(id)
{

xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Browser does not support HTTP Request");
  return;
  }



alert(id);

url=encodeURI("handler.php?id="+id+"&do=delete");
xmlhttp.onreadystatechange=stateChangedd;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChangedd()
{
  if (xmlhttp.readyState==4)
  {
alert('done');
alert(id);

  }
}

function GetXmlHttpObject()
{
var objXMLHttp=null;
if (window.XMLHttpRequest)
  {
  objXMLHttp=new XMLHttpRequest();
  }
else if (window.ActiveXObject)
  {
  objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
return objXMLHttp;

} 

я получаю первое предупреждение, которое говорит, что сделано! но я не могу получить второй

с анонимной функцией ни одно из предупреждений не работает, хотя отправляет URL

function deletrow(id)
{

xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Browser does not support HTTP Request");
  return;
  }



alert(id);

url=encodeURI("handler.php?id="+id+"&do=delete");
xmlhttp.onreadystatechange;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

xmlhttp.onreadystatechange=function()

{
  if (xmlhttp.readyState==4)
  {
alert('done');
alert(id); 
  }
}

function GetXmlHttpObject()
{
var objXMLHttp=null;
if (window.XMLHttpRequest)
  {
  objXMLHttp=new XMLHttpRequest();
  }
else if (window.ActiveXObject)
  {
  objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
return objXMLHttp;

} 

1 Ответ

0 голосов
/ 28 июня 2011

Это потому, что id находится вне области stateChangedd. просто используйте функцию stateChanged, поскольку анонимная функция в onreadystatechange будет работать:

function deletrow(id)
{

    xmlhttp=GetXmlHttpObject();
    if (xmlhttp==null)
    {
        alert ("Browser does not support HTTP Request");
        return;
    }    

    alert(id);

    url=encodeURI("handler.php?id="+id+"&do=delete");
    xmlhttp.onreadystatechange = function(){
        if (xmlhttp.readyState==4){
            alert('done');
            alert(id);
        }
    }
    xmlhttp.open("GET",url,true);
    xmlhttp.send(null);
}


function GetXmlHttpObject()
{
    var objXMLHttp=null;
    if (window.XMLHttpRequest)
    {
        objXMLHttp=new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
        objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    return objXMLHttp;
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...