none
GET和POST的区别 RRS feed

  • 问题

  • 以下这个示例如果把GET改为POST,则网页不显示XML的内容。
    这是为什么啊?有谁能帮我深入地讲讲GET和POST的区别?

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE>Using responseText with innerHTML</TITLE>
      <script type="text/javascript">
      var xmlHttp;
      function createXMLHttpRequest()
      {
     if(window.ActiveXObject)
     {
      xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
     }
     else if(window.XMLHttpRequest)
     {
      xmlHttp = new XMLHttpRequest();
     }
      }

      function startRequest()
      {
     createXMLHttpRequest();
     xmlHttp.onreadystatechange = handleStateChange;
     xmlHttp.open("GET","http://localhost:8050/innerHTML.xml",true);
     xmlHttp.send(null);
      }

      function handleStateChange()
      {
     if(xmlHttp.readyState == 4)
     {
      if(xmlHttp.status == 200)
      {
       document.getElementById("results").innerHTML = xmlHttp.responseText;
      }
     }
      }
      </script>
     </HEAD>

     <BODY>
     <form action = "#">
      <input type="button" value="Search for Today's Activities" onclick = "startRequest();"/>
      <div id="results" ></div>
     </form>
     </BODY>
    </HTML>

    XML文件的内容:

    <table border="1">
     <tbody>
      <tr>
       <th>Activity Name</th>
       <th>Location</th>
       <th>Time</th>
      </tr>
      <tr>
       <td>WaterSkiing</td>
       <td>Dock #1</td>
       <td>9:00 AM</td>
      </tr>
      <tr>
       <td>Volleyball</td>
       <td>Trail 3</td>
       <td>2:00 PM</td>
      </tr>
     </tbody>
    </table>


    做最好的自己
    • 已移动 Sheng Jiang 蒋晟 2009年7月18日 20:14 客户端HTML问题 (发件人:ASP.NET 与 AJAX)
    2009年7月18日 3:08

答案

  • get方式,参数都是在url后面的,所能传递的参数有限,POST则是放在表单元素里面,传递的参数可以很大。 一般静态的文件不允许执行POST动作的,所以,不能显示xml一般是不允许执行post所致。 如果是动态语言,如aspx文件,一般都是允许post和get的,则应该是都可以返回正确的值
    【孟子E章】
    2009年7月18日 3:15
    版主
  • 1. Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。
    2. Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用 “&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。
    3. Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志 文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。Post的所有操作对用户来说都是不可见的。
    4. Get传输的数据量小,这主要是因为受URL长度限制;而Post可以传输大量的数据,所以在上传文件只能使用Post。
    5. Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。
    6. Get是Form的默认方法。
    http://hi.baidu.com/2009ajun
    2009年7月18日 3:31

全部回复

  • get方式,参数都是在url后面的,所能传递的参数有限,POST则是放在表单元素里面,传递的参数可以很大。 一般静态的文件不允许执行POST动作的,所以,不能显示xml一般是不允许执行post所致。 如果是动态语言,如aspx文件,一般都是允许post和get的,则应该是都可以返回正确的值
    【孟子E章】
    2009年7月18日 3:15
    版主
  • 大侠说的很对。我记得在aspx里的确都可以。谢谢。
    做最好的自己
    2009年7月18日 3:28
  • 1. Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。
    2. Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用 “&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。
    3. Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志 文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。Post的所有操作对用户来说都是不可见的。
    4. Get传输的数据量小,这主要是因为受URL长度限制;而Post可以传输大量的数据,所以在上传文件只能使用Post。
    5. Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。
    6. Get是Form的默认方法。
    http://hi.baidu.com/2009ajun
    2009年7月18日 3:31