關於XMLHttpRequest.open()設定提交方式 (POST,GET)(

來源:互聯網
上載者:User

關於XMLHttpRequest.open()設定提交方式 (POST,GET)(2008-07-29 22:59:16)標籤:ajax javascript it   

    眾所周知XMLHttpRequest的open()方法裡的第一個參數是用來設定向伺服器提交的方式,這是絕對的嗎?不一定哦,看看下面的代碼。
代碼片斷如下:
function simpleStrSubmit()
{
var xmlReqFile = createXMLReqFile();
xmlHttp.open("GET","ProcessServlet",true);//指定GET方式提交
xmlHttp.onreadystatechange = processRequest;//回呼函數
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send("xml="+xmlReqFile);
}

描述:其中ProcessServlet是一個Servlet
問題:open方法的第一個參數不論寫"GET"或是"POST",在ProcessServlet裡都是調用的doPost方法??這是為什嗎?為什麼不調用doGet方法???
答案:按照哪種方式提交不是由open()方法的第一個參數完全決定的,還與send()方法有關。
      一、當open()方法裡指定的是GET,並且
          1、send()方法的參數是""或者null,跟蹤代碼可以知道調用了Servlet中的doGet方法
          2、send()方法的參數是地址修正的方式,或者就是一個字串,都調用doPost方法,例如:
             xmlHttp.open("GET",
                       "ProcessServlet?choose="+document.getElementById("choosejsfile").value,
                        true);//open裡調用GET方法。
             xmlHttp.send("aaa=dd");          //a
             xmlHttp.send("paramTest");       //b
             xmlHttp.send("     ");           //c
             xmlHttp.send(null);              //d
             xmlHttp.send("");                //e
             對於a、b、c、d、e五中send()函數,只有d和e會調用doGet方法,a、b、c三種方式均調用 doPost方法。
      二、當open()方法裡指定的是POST,則對於以上5種send()函數,伺服器均會調用doPost方法。
所以使用哪種方式提交是由open方法和send方法共同決定的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.