JS使用XMLHttpRequest對象POST收發JSON格式數據

JavaScirpt中的XMLHttpRequest對象提供了對 HTTP 協議的完全訪問,使用該對象可以在不刷新頁面的情況與服務器交互數據。XMLHttpRequest是實現AJAX技術的關鍵對象,本站曾整理過一篇介紹該對象的文章: JS使用XMLHttpRequest對象與服務器進行數據交互 ,今天將介紹使用XMLHttpRequest對象收發JSON格式數據。

應用場景

在工作中有一個應用需要使用驗證碼,在用戶輸入驗證碼后,使用AJAX技術將用戶輸入內容提交到服務器端進行驗證。服務器端數據的收發都是基于JSON格式的,因此,在發送數據時需要設置數據的請求格式,收到服務器響應內容后也要對數據進行處理。

關鍵代碼

var captcha = document.getElementsByName('captcha')[0];  //用戶輸入驗證碼的input
captcha.onchange = function(){var xhr = new XMLHttpRequest();//使用HTTP POST請求與服務器交互數據xhr.open("POST", "/captcha", true);//設置發送數據的請求格式xhr.setRequestHeader('content-type', 'application/json');xhr.onreadystatechange = function() {if (xhr.readyState == 4) {//根據服務器的響應內容格式處理響應結果if(xhr.getResponseHeader('content-type')==='application/json'){var result = JSON.parse(xhr.responseText);	//根據返回結果判斷驗證碼是否正確if(result.code===-1){alert('驗證碼錯誤');}} else {console.log(xhr.responseText);}}}var sendData = {captcha:this.value};//將用戶輸入值序列化成字符串xhr.send(JSON.stringify(sendData));
}

相關代碼解釋

xhr.open(“POST”, “/captcha”, true):這一句傳入了三個參數,第一個參數POST是HTTP請求類型為。/captcha是請求路由,即:請求網址。true表示這是一個異步請求。

xhr.setRequestHeader(‘content-type’, ‘application/json’):這一句實際上是在HTPP請求的header中添加content-type。

xhr.getResponseHeader(‘content-type’)===‘application/json’:這一句是判斷服務器的響應內容格式,如果是’application/json’格式就說明可以轉換為JSON對象,之后客戶端就可以按JSON對象格式進行數據處理。

xhr.send(JSON.stringify(sendData)):xhr.send()方法要求傳入數據格式是字符串或Document對象,但傳入數據是一個Object,所以需要使用JSON.stringify()將其序列化成字符串。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249347.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249347.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249347.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ShopXO本地化部署安裝之centeros 安裝Apache2.4.6 + PHP7.0.33 + Mysql5.7.25環境

對于centerOS安裝PHP環境,目前網上的帖子都已經比較成熟,具體步驟大家可以自行搜索查看,但是在安裝過程中遇到的一些小細節,這些內容往往需要結合多個帖子才能找到答案,在這里簡單記錄一下。 細節一 如果使用的阿里云…

Spring Boot 擴展點應用之工廠加載機制

Spring 工廠加載機制,即 Spring Factories Loader,核心邏輯是使用 SpringFactoriesLoader 加載由用戶實現的類,并配置在約定好的META-INF/spring.factories 路徑下,該機制可以為框架上下文動態的增加擴展。 該機制類似于 Java SPI…

Vue.js使用-http請求

Vue.js使用-ajax使用 1.為什么要使用ajax 前面的例子,使用的是本地模擬數據,通過ajax請求服務器數據。 2.使用jquery的ajax庫示例 new Vue({el: #app,data: {searchQuery: ,columns: [{name: name, iskey: true}, {name: age},{name: sex, dataSource:…

跨域(Cross-Domain) AJAX for IE8 and IE9

1、有過這樣一段代碼,是ajax $.ajax({url: "http://127.0.0.1:9001",type: "POST",data: JSON.stringify({"reqMsg":"12345"}),dataType: json,timeout: 1000 * 30,success: function (response) {if(response.n6){dosomet…

移動WEB的頁面布局

隨著移動互聯網的日益普遍,現在移動版本的web應用也應用而生,那么在做移動web頁面布局的過程中,應該注意哪些要點呢?現把個人的一些學習經驗總結如下: 要點一、piexl 1px 2dp dp dpr dpi ppi 要點二、viewport io…

AnswerOpenCV(1001-1007)一周佳作欣賞

外國不過十一,所以利用十一假期,看看他們都在干什么。一、小白問題http://answers.opencv.org/question/199987/contour-single-blob-with-multiple-object/ Contour Single blob with multiple objectHi to everyone. Im developing an object shape id…

Mysql 開啟遠程連接

在日常的數據庫的使用過程,往往會因為連接權限的問題搞得我們焦頭爛額,今天我把我們在數據庫連接上的幾個誤區簡單做個記錄。內容如下: 誤區一:MYSQL密碼和數據庫密碼的區別 mysql密碼是我們在安裝mysql服務是設置的密碼&#xf…

基于jsp+servlet完成的用戶注冊

思考 : 需要創建實體類嗎? 需要創建表嗎 |----User 存在、不需要創建了!表同理、也不需要了 1.設計dao接口 package cn.javabs.usermanager.dao;import cn.javabs.usermanager.entity.User;/*** 用戶的dao接口的設計* author Mryang**/ public interfa…

vue resource then

https://www.cnblogs.com/chenhuichao/p/8308993.html

云開發創建云函數

安裝wx-server-sdk時候,終端報錯如下: 解決方法: 運行:npm cache clean --force即可 轉載于:https://www.cnblogs.com/moguzi12345/p/9758842.html

Java8新特性——函數式接口

目錄 一、介紹 二、示例 (一)Consumer 源碼解析 測試示例 (二)Comparator (三)Predicate 三、應用 四、總結 一、介紹 FunctionalInterface是一種信息注解類型,用于指明接口類型聲明…

CSS3筆記之基礎篇(一)邊框

效果一、圓角效果 border-radius 實心上半圓: 方法:把高度(height)設為寬度(width)的一半,并且只設置左上角和右上角的半徑與元素的高度一致(大于也是可以的)。 div {height:50px;/*是width…

JavaSE之Java基礎(1)

1、為什么重寫equals還要重寫hashcode 首先equals與hashcode間的關系是這樣的: 1、如果兩個對象相同(即用equals比較返回true),那么它們的hashCode值一定要相同; 2、如果兩個對象的hashCode相同,它們并不一…

bootstarp table

https://www.cnblogs.com/laowangc/p/8875526.html

高級組件——彈出式菜單JPopupMenu

彈出式菜單JPopupMenu,需要用到鼠標事件。MouseListener必須要實現所有接口,MouseAdapter是類,只寫你關心的方法,即MouseAdapter實現了MouseListener中的方法 import javax.swing.*; import java.awt.*; import java.awt.event.Mo…

CSS3筆記之基礎篇(二)顏色和漸變色彩

效果一、顏色之RGBA RGB是一種色彩標準,是由紅(R)、綠(G)、藍(B)的變化以及相互疊加來得到各式各樣的顏色。RGBA是在RGB的基礎上增加了控制alpha透明度的參數。 語法: color:rgba(R,G,B,A) 以上R、G、B三個參數,正整數值的取值…

19_03_26校內訓練[魔法卡片]

題意 有n張有序的卡片,每張卡片上恰有[1,m]中的每一個數,數字寫在正面或反面。每次詢問區間[l,r],你可以將卡片上下顛倒,問區間中數字在卡片上方的并的平方和最大是多少。q,n*m≤1,000,000。 思考 一個很重要的性質,若…

vue 靜態圖片引入

https://blog.csdn.net/weixin_33862188/article/details/93325502

c:if test=/c:if 使用

1、頁面引用<%taglib uri"http://java.sun.com/jsp/jstl/core" prefix"c"%> 2、整形判斷&#xff1a; <c:if test"${TEST 1}"> </c:if> 3、判斷非空&#xff1a; <c:if test"${empty TEST}"> TEST為空 <…

CSS3筆記之基礎篇(三)文字與字體

要點一、text-overflow與word-wrap text-overflow&#xff1a;設置是否使用一個省略標記&#xff08;...&#xff09;標示對象內文本的溢出。 word-wrap&#xff1a;設置文本行為&#xff0c;當前行超過指定容器的邊界時是否斷開轉行。 語法如下&#xff1a; 注意&#xff1…