JS--AJAX建立XMLHttpRequest连接、发送GET请求、发送POST请求

朴灿烈づ我的快乐病毒、 2021-08-13 12:16 733阅读 0赞

建立XMLHttpRequest连接

创建XMLHttpRequest对象之后,就可以使用该对象的open()方法建立一个HTTP请求。open()方法用法如下:

  1. oXMLHttpRequest.open.(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword);

该方法包含5个参数,其中前两个参数是必须的。

  • bstrMethod: HTTP方法字符串,如GET、POST等,大小写不敏感
  • bstrUrl: 请求的URL地址字符串,可以为绝对地址或相对地址
  • varAsync: 布尔值,可选参数,指定请求是否为异步方式。默认为true。如果为真,当状态改变时会调用onreadystatechange属性指定的回调函数
  • bstrUser: 可选参数,如果服务器需要验证,该参数指定用户名,如果未只当,当服务器需要验证时,会弹出验证窗口
  • **bstrPassword:**可选参数,验证信息中的密码部分,如果用户名为空,则此值将被忽略

建立连接之后,就可以使用send()方法发送请求到服务器端,并接收服务器的响应。send()方法用法如下:

  1. XMLHttpRequest.send(varBody);
  2. //varBody表示将通过该请求发送的数据,如果不传递信息,可以设置参数为null

该方法的同步或异步取决于open方法中的BAsync参数,如果bAsync == False,此方法将会等待请求完成或者超时时才会返回,如果bAsync == True,此方法将立即返回。
使用XMLHttpRequest对象的responseBody、responseStream、responseText或responseXML属性可以接收响应数据。

示例:

  1. <h1>AJAX测试</h1>
  2. <button id="btn" value="btn" onclick="f()">按钮</button>
  3. <script> function f() { var ajax = createXMLHTTPObject(); ajax.open("get", "response.jsp",false); ajax.send(null); alert(ajax.responseText); } </script>

response.jsp:

  1. ajax响应

点击按钮,弹出提示框:
在这里插入图片描述

发送GET请求

发送GET请求时,只需要将包含查询字符串的URL传入open()方法,设置第一个参数值为“GET”即可。服务器能够在URL尾部的查询字符串中接收用户传递过来的信息。

示例:

  1. <h1>AJAX测试</h1>
  2. <button id="btn" value="btn" onclick="f()">按钮</button>
  3. <script> function f() { var ajax = createXMLHTTPObject(); ajax.open("get", "response.jsp?name=zhangsan",false); ajax.send(null); alert(ajax.responseText); } </script>

response.jso:

  1. <%
  2. String name = request.getParameter("name");
  3. response.getWriter().write(name);
  4. %>

点击按钮:弹出提示框显示查询信息:
在这里插入图片描述
注意:查询字符串通过(?)前缀附加在URL的末尾,发送数据是以连字符(&)连接的一个或多个键值对。每个名称和值都必须在编码后才能用在URL中,用户使用JavaScript的encodeURLComponent()函数对其进行编码,服务器端在接收这些数据时也必须使用decodeURIComponent()函数进行解码。URL的最大长度为2048字符(2KB)。

发送POST请求

POST请求支持发送任意格式、任意长度的数据,一般多用于表单提交。于GET发送的数据格式相似,POST发送的数据也必须进行编码,并用连字符(&)进行分割,格式如下:

  1. send("key1=value1&key2=value2&...");
  2. //这些参数在发送POST请求时,不会被附加到URL的末尾,而是作为send()方法的参数进行传递

注意:使用POST发送请求需要设置响应头信息

  1. xmlhttp.setRequestHeader("Header-name", "value");

一般我们设置的是:content-type,传输数据类型,即服务器需要我们传送的数据类型

  1. xmlhttp.setRequestHeader ("content-type", "application/x-www-form-urlencoded" )
  2. //表示传递的是表达值

用于发送POST请求的数据类型(Content Type)通常是application/x-www-form-urlencoded,这意味着我们还可以text/xml或application/xml类型给服务器发送XML数据,甚至可以以application/json 类型发送JavaScript对象。

示例:

  1. <h1>AJAX测试</h1>
  2. <button id="btn" value="btn" onclick="f()">按钮</button>
  3. <script> function f() { var ajax = createXMLHTTPObject(); ajax.open("post", "response.jsp",false); ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); ajax.send("name=Tom"); alert(ajax.responseText); } </script>

response.jso:

  1. <%
  2. String name = request.getParameter("name");
  3. response.getWriter().write(name);
  4. %>

点击按钮:弹出提示框显示查询信息:
在这里插入图片描述

GET与POST方式对比

使用GET方式传递的信息量是有限的,而使用POST方式传递的信息是无限的,且不受字符编码的限制,还可以传递二进制数据。对于传输文件,以及大容量信息时应采用POST方式。另外,当发送安全信息或XML格式数据时,也应该考虑选用这种方案来实现。

发表评论

表情:
评论列表 (有 0 条评论,733人围观)

还没有评论,来说两句吧...

相关阅读