日期:2014-05-16  浏览次数:20583 次

急!!req.open("Get",url,true)出错,搞了两天也没找到错误的原因。 - Web 开发 / Ajax
我把页面的所有项做为参数都放到url中,可在执行     req.open( "Get ",url,true);
这句时会出错,角本报的是“未指明的错误”。注释掉for循环,可以执行过去,说明是url有问题。可怪的就是在这里,我同一个页面,执行同样的操作,比如同样的执行两个删除动作,有的时候就能够执行过去,有时就会出错,根本找不到出错的原因,没有规律可言,我都快疯掉了,谁来救救我啊????
        不知道url参数有什么特殊要求吗,比如是否有不支持的特殊字符、或长度有限制......
        等待达人指点迷津!!

        var   url   =   "/CheckModify?method= "   +   escape( "get ");
for   (i=0;i <document.forms[0].elements.length;i++){
    curname=document.forms[0].elements[i].name;
    curvalue=document.forms[0].elements[i].value;
    if   ( " "   !=   curname)   {
    url   =   url   +   "& "   +   curname   +   "= "   +   escape(curvalue);
    }
}                            

        if   (window.XMLHttpRequest)   {
                req   =   new   XMLHttpRequest(   );
        }
        else   if   (window.ActiveXObject)   {
                req   =   new   ActiveXObject( "Microsoft.XMLHTTP ");
        }
        alert( "1 ");
        req.open( "Get ",url,true);
        alert( "2 ");
        req.onreadystatechange   =   callback;
        req.send(null);

------解决方案--------------------
url长度有限制,字符也有限制, "get "是合法的,你用了escape,curname, curvalue很可能不合法,你却没有用

长度不知道是否会过长,要看页面的长度,像这样的情况建议还是用POST方法,而不是GET方法好。
------解决方案--------------------
if ( " " != curname)
你这里只判断了curname不为空,那如果curvalue为空的时候得到的url就不对了。
你在做完循环后用alert(url);检查一下你作成的url好了。
------解决方案--------------------
// 改成这样测试一下呢:

var url = "/CheckModify?method=get ";
for (i=0;i <document.forms[0].elements.length;i++){
curname=document.forms[0].elements[i].name;
curvalue=document.forms[0].elements[i].value;
if (curname) {
curvalue = curvalue || " ";
url = url + "& " + curname + "= " + escape(curvalue);
}
}
//-------------------------------------
alert(url); //查看一下url的值
//-------------------------------------
if (window.XMLHttpRequest) {
req = new XMLHttpRequest( );
}
else if (window.ActiveXObject) {
req = new ActiveXObject( "Microsoft.XMLHTTP ");
}
alert( "1 ");
req.open( "Get ",url,true);
alert( "2 ");
req.onreadystatechange = callback;
req.send(null);