none
xmlhttp.status在Firefox下和IE下的返回值. RRS feed

  • 问题

  •  

    Code Snippet
    function GetTasks()
            {
                //创建XMLHttpRequest对象
                var xmlhttp
                try{
                    xmlhttp = new XMLHttpRequest();
                }catch(e){
                    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                }
                //创建请求结果处理程序
                xmlhttp.onreadystatechange = function(){
                    if(4 == xmlhttp.readyState){
                        if(200 == xmlhttp.status){
                            var rt = xmlhttp.responseText;
                            if (rt.substr(0,4)!="")
                            {
                                document.getElementById('xxts').innerHTML=rt;                           
                            }
                            else
                            {
                                document.getElementById('xxts').innerHTML="正在获取信息中....";
                             }
                        }else{
                            document.getElementById('xxts').innerHTML="获取任务信息中...";
                        }
                    }
                }
                //打开连接,true代表异步提交
                xmlhttp.open("post","Tasks_AjaxGet.aspx",true);
                //当方法为POST时需要设置HTTP头
                xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
                //发送数据
                xmlhttp.send(null);
            }

     

     

     

     

    同样一段代码,我在IE下能正常得到数据,但在Firefox下,xmlhttp.status的值却为411,这个问题怎么解决,求解???
    2009年1月13日 7:50

答案

  • 可以使用prototype.js库,里面有现成的ajax处理方法,比自己写的简单多了。

    2009年1月13日 8:05
  • 1,如果不提交数据,可以使用Get方法而无需Post,除非代码里面强制判断了Request.Method

    2,不提交数据,可以设置

    xmlhttp.setRequestHeader("Content-Length", 0); //提交的数据的length
    xmlhttp.setRequestHeader("Connection", "close");

    不同的浏览器对XMLHttpRequest的内部实现是不同的。不过,接口都是相同的。

     

    还很少见到不同的浏览器提交的结果有很大差异的情况

     

    2009年1月13日 12:24
    版主
  • 411:

     Length Required

    "Content-Length"未被定义。如果无此内容,服务器不会接受请求。

    按照孟前辈说的加上Content-Length就可以了.

     

    2009年1月14日 7:11

全部回复

  • 可以使用prototype.js库,里面有现成的ajax处理方法,比自己写的简单多了。

    2009年1月13日 8:05
  • 需要设置
    xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    xmlhttp.setRequestHeader("Content-Length", parameters.length); //提交的数据的length
    xmlhttp.setRequestHeader("Connection", "close");
    2009年1月13日 8:21
    版主
  •  

    xmlhttp.send(null);

     

    我发送的长度为空

    xmlhttp.setRequestHeader("Content-Length", parameters.length); //提交的数据的length
    xmlhttp.setRequestHeader("Connection", "close");
    这二句话加上去也没什么反应啊~

     

    想知道为什么Firefox下和IE返回值不一样,我在本地VS2008下调试的时候得到的都是正常的(200),可一编译后放到服务器上,FF下就显示是411,IE下还是200,这应该怎么解决呢?

    2009年1月13日 8:32
  •  小朱zsy 写:

    可以使用prototype.js库,里面有现成的ajax处理方法,比自己写的简单多了。

     

    我是想知道怎么用,即需即用,有的东西是很好,可是里面的功能我很多用不着,也就没必要整个都搬过来用了.

    2009年1月13日 8:35
  • 1,如果不提交数据,可以使用Get方法而无需Post,除非代码里面强制判断了Request.Method

    2,不提交数据,可以设置

    xmlhttp.setRequestHeader("Content-Length", 0); //提交的数据的length
    xmlhttp.setRequestHeader("Connection", "close");

    不同的浏览器对XMLHttpRequest的内部实现是不同的。不过,接口都是相同的。

     

    还很少见到不同的浏览器提交的结果有很大差异的情况

     

    2009年1月13日 12:24
    版主
  • 411:

     Length Required

    "Content-Length"未被定义。如果无此内容,服务器不会接受请求。

    按照孟前辈说的加上Content-Length就可以了.

     

    2009年1月14日 7:11