您的位置主页 > 前端技术 > Javascript&js > 关于XMLHttpRequest的get和post方式提交.

关于XMLHttpRequest的get和post方式提交.

2009-08-14    文章来源:互联网    浏览次数:599

众所周知XMLHttpRequest的open()方法里的第一个参数是用来设置向服务器提交的方式,这是绝对的吗?不一定哦,看看下面的代码。
代码片断如下:

 
  1. function simpleStrSubmit() 
  2.     var xmlReqFile = createXMLReqFile(); 
  3.     xmlHttp.open("GET","ProcessServlet",true);//指定GET方式提交 
  4.     xmlHttp.onreadystatechange = processRequest;//回调函数 
  5.     xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
  6.     xmlHttp.send("xml="+xmlReqFile); 

描述:其中ProcessServlet是一个Servlet
问题:open方法的第一个参数不论写"GET"或是"POST",在ProcessServlet里都是调用的doPost方法??这是为什么?为什么不调用doGet方法???
答案:按照哪种方式提交不是由open()方法的第一个参数完全决定的,还与send()方法有关。
      一、当open()方法里指定的是GET,并且
          1、send()方法的参数是""或者null,跟踪代码可以知道调用了Servlet中的doGet方法
          2、send()方法的参数是地址重写的方式,或者就是一个字符串,都调用doPost方法,例如:
             

 
  1. xmlHttp.open("GET","ProcessServlet?choose="+document.getElementById("choosejsfile").value,true);//open里调用GET方法。
  2. xmlHttp.send("aaa=dd");           //a
  3. xmlHttp.send("paramTest");        //b
  4. xmlHttp.send("     ");            //c
  5. xmlHttp.send(null);               //d
  6. xmlHttp.send("");                 //e


             对于a、b、c、d、e五中send()函数,只有d和e会调用doGet方法,a、b、c三种方式均调用 doPost方法。
      二、当open()方法里指定的是POST,则对于以上5种send()函数,服务器均会调用doPost方法。

所以使用哪种方式提交是由open方法和send方法共同决定的。

  • 上一篇:ECSHOP首页调用某个分类下的商品
  • 下一篇:没有了
  • 文章评论(查看全部)

    验证码: 中评 好评 差评