将全局参数传递给statechaned函数

时间:2011-06-28 13:46:16

标签: javascript ajax

我有一个用于从db

删除行的ajax代码

它有一个id参数来识别该行

我希望能够在stateChangedd函数

上删除后使用它
function stateChangedd()
{
  if (xmlhttp.readyState==4)
  {
alert('done');
alert(id);

  }
}

但它说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;

} 

我得到了第一个完成的警报!但我不能得到第二个

使用匿名函数没有任何警报工作,它会发送网址

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 :(得分:0)

那是因为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;
} 
相关问题