Ajax與JSON是密不可分的,因為目前我們大部分Ajax請求都采用JSON來完成前后端之間的數(shù)據(jù)交互。
用一個原生的JavaScript來寫一個Ajax,來講述怎么提交JSON參數(shù)到后端,首先提交JSON數(shù)據(jù),后端要以JSON方式接收,另外前端要采用POST提交方式,下面來直接看代碼。
Ajax原生的JavaScript寫法分為六步:
具體代碼直接看下面:
//1.創(chuàng)建ajax request對象
var request = new XMLHttpRequest();
//2.綁定監(jiān)聽回調(diào)函數(shù)
request.onreadystatechange = function(){
//判斷返回狀態(tài)是否正常
if(request.readyState ===4 &&request.status === 200){
//6.接收數(shù)據(jù)
var res = request.responseText;
//輸出數(shù)據(jù)
console.log('返回值',res);
}else{
//錯誤
console.log('error');
}
};
/**
* 3.打開請求
* 第一個參數(shù)為請求方式,常用可選為 GET/POST,還有DELETE、UPDATE、OPTIONS等
* 第二個參數(shù)為請求的鏈接,可以是相對路徑和絕對路徑。
* 第三個參數(shù)設(shè)置請求為同步還是異步,true為異步,false為同步
*/
request.open("POST","https://cdn.sojson.com/file/demo-json.json",true);
/**
* 4. setRequestHeader 方法可以設(shè)置請求頭,這個看業(yè)務(wù)需要,這里設(shè)置為表單提交
*/
request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
/**
* 5.發(fā)送請求
*
* GET請求方式:request.send();
*
* POST請求方式:可以傳參,可以是字符型的JSON或者 ?和 &方式如下:
* request.send("name=Alice&age=23");
* //這個方式如果后端接受不到參數(shù),請把請求頭改成 "Content-type","application/json"
*
*
*
*/
//發(fā)送JSON數(shù)據(jù)
request.send('{"name":"Alice","age":23}');
我們從瀏覽器的請求信息里,可以看到提交參數(shù),如下圖:

Ajax接受JSON數(shù)據(jù),是表示被請求方返回為JSON數(shù)據(jù),前端需要接收數(shù)據(jù),并且解析數(shù)據(jù)。
Ajax 步驟還是和上面一樣,還是6個步驟,我們直接看代碼。
//1.創(chuàng)建ajax request對象
var request = new XMLHttpRequest();
//2.綁定監(jiān)聽回調(diào)函數(shù)
request.onreadystatechange = function(){
//判斷返回狀態(tài)是否正常
if(request.readyState ===4 &&request.status === 200){
//6.接收數(shù)據(jù)
var res = request.responseText;
//輸出數(shù)據(jù)
console.log('返回值',res);
/**
* 如果返回來的參數(shù)是JSON,就可以直接轉(zhuǎn)換。
*/
var json = JSON.parse(res);
console.log('返回值-轉(zhuǎn)換JSON對象',json);
console.log('demo:',json.demo);
console.log('Name:',json.Name);
console.log('Birthday:',json.Birthday);
console.log('Birthday:',json.Birthday);
console.log('Birthplace:',json.Birthplace);
console.log('Info:',json.Info);
}else{
console.log('error');
}
};
/**
* 3.打開請求
* 第一個參數(shù)為請求方式,常用可選為 GET/POST,還有DELETE、UPDATE、OPTIONS等
* 第二個參數(shù)為請求的鏈接,可以是相對路徑和絕對路徑。
* 第三個參數(shù)設(shè)置請求為同步還是異步,true為異步,false為同步
*
* 備注:GET請求,直接把參數(shù)以 ?和 & 來傳參,如 url+ ?name=Alice&age=23
*/
request.open("GET","https://cdn.sojson.com/file/demo-json.json",true);
/**
* 4. setRequestHeader 方法可以設(shè)置請求頭,這個看業(yè)務(wù)需要,這里設(shè)置為表單提交
*/
request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
/**
* 5.發(fā)送請求
*
* GET請求方式:request.send();
*
* POST請求方式:可以傳參,可以是字符型的JSON或者 ?和 &方式如下:
* request.send("name=Alice&age=23");
* //這個方式如果后端接受不到參數(shù),請把請求頭改成 "Content-type","application/json"
* request.send('{"name":"Alice","age":23}');
*
*
*/
request.send();
我們從瀏覽器控制臺(console)看到輸出的內(nèi)容:

版權(quán)所屬:SOJSON(原創(chuàng)文章)
原文地址:http://suancuo.cn/json/json_ajax.html
轉(zhuǎn)載時必須以鏈接形式注明原始出處及本聲明。
綜合技術(shù)交流:點擊加入--> [SO JSON官方交流①群][收費]
綜合技術(shù)交流:點擊加入--> [SO JSON官方交流②群][免費]
要求:不能發(fā)廣告、暴力、政治、付費教程,違者直接踢出。
備注:入群費用5元,沒有QQ錢包,可以先支付寶 or 微信掃碼支付5元贊助后,我拉您進去。QQ聯(lián)系我。
掃碼贊助:贊助二維碼。
技術(shù)交流QQ群:①群259217951,②群166848545
站長郵箱:so@sojson.com
對頁面內(nèi)容有任何疑問和建議,請聯(lián)系我們。
所有贊助/開支都講公開明細(xì),用于網(wǎng)站維護:贊助名單查看
正在加載... ...