我有一个用于从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;
}
答案 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;
}