Ajax與JSON是密不可分的,因?yàn)槟壳拔覀兇蟛糠?a href="http://zijieyoumin.cn/json/json_ajax.html" target="_blank" title="ajax">Ajax請(qǐng)求都采用JSON來完成前后端之間的數(shù)據(jù)交互。
用一個(gè)原生的JavaScript來寫一個(gè)Ajax,來講述怎么提交JSON參數(shù)到后端,首先提交JSON數(shù)據(jù),后端要以JSON方式接收,另外前端要采用POST提交方式,下面來直接看代碼。
Ajax原生的JavaScript寫法分為六步:
具體代碼直接看下面:
//1.創(chuàng)建ajax request對(duì)象 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{ //錯(cuò)誤 console.log('error'); } }; /** * 3.打開請(qǐng)求 * 第一個(gè)參數(shù)為請(qǐng)求方式,常用可選為 GET/POST,還有DELETE、UPDATE、OPTIONS等 * 第二個(gè)參數(shù)為請(qǐng)求的鏈接,可以是相對(duì)路徑和絕對(duì)路徑。 * 第三個(gè)參數(shù)設(shè)置請(qǐng)求為同步還是異步,true為異步,false為同步 */ request.open("POST","https://cdn.sojson.com/file/demo-json.json",true); /** * 4. setRequestHeader 方法可以設(shè)置請(qǐng)求頭,這個(gè)看業(yè)務(wù)需要,這里設(shè)置為表單提交 */ request.setRequestHeader("Content-type","application/x-www-form-urlencoded"); /** * 5.發(fā)送請(qǐng)求 * * GET請(qǐng)求方式:request.send(); * * POST請(qǐng)求方式:可以傳參,可以是字符型的JSON或者 ?和 &方式如下: * request.send("name=Alice&age=23"); * //這個(gè)方式如果后端接受不到參數(shù),請(qǐng)把請(qǐng)求頭改成 "Content-type","application/json" * * * */ //發(fā)送JSON數(shù)據(jù) request.send('{"name":"Alice","age":23}');
我們從瀏覽器的請(qǐng)求信息里,可以看到提交參數(shù),如下圖:
Ajax接受JSON數(shù)據(jù),是表示被請(qǐng)求方返回為JSON數(shù)據(jù),前端需要接收數(shù)據(jù),并且解析數(shù)據(jù)。
Ajax 步驟還是和上面一樣,還是6個(gè)步驟,我們直接看代碼。
//1.創(chuàng)建ajax request對(duì)象 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對(duì)象',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.打開請(qǐng)求 * 第一個(gè)參數(shù)為請(qǐng)求方式,常用可選為 GET/POST,還有DELETE、UPDATE、OPTIONS等 * 第二個(gè)參數(shù)為請(qǐng)求的鏈接,可以是相對(duì)路徑和絕對(duì)路徑。 * 第三個(gè)參數(shù)設(shè)置請(qǐng)求為同步還是異步,true為異步,false為同步 * * 備注:GET請(qǐng)求,直接把參數(shù)以 ?和 & 來傳參,如 url+ ?name=Alice&age=23 */ request.open("GET","https://cdn.sojson.com/file/demo-json.json",true); /** * 4. setRequestHeader 方法可以設(shè)置請(qǐng)求頭,這個(gè)看業(yè)務(wù)需要,這里設(shè)置為表單提交 */ request.setRequestHeader("Content-type","application/x-www-form-urlencoded"); /** * 5.發(fā)送請(qǐng)求 * * GET請(qǐng)求方式:request.send(); * * POST請(qǐng)求方式:可以傳參,可以是字符型的JSON或者 ?和 &方式如下: * request.send("name=Alice&age=23"); * //這個(gè)方式如果后端接受不到參數(shù),請(qǐng)把請(qǐng)求頭改成 "Content-type","application/json" * request.send('{"name":"Alice","age":23}'); * * */ request.send();
我們從瀏覽器控制臺(tái)(console)看到輸出的內(nèi)容:
版權(quán)所屬:SOJSON(原創(chuàng)文章)
原文地址:http://zijieyoumin.cn/json/json_ajax.html
轉(zhuǎn)載時(shí)必須以鏈接形式注明原始出處及本聲明。
綜合技術(shù)交流:點(diǎn)擊加入--> [SO JSON官方交流①群][收費(fèi)]
綜合技術(shù)交流:點(diǎn)擊加入--> [SO JSON官方交流②群][免費(fèi)]
要求:不能發(fā)廣告、暴力、政治、付費(fèi)教程,違者直接踢出。
備注:入群費(fèi)用5元,沒有QQ錢包,可以先支付寶
or 微信
掃碼支付5元贊助后,我拉您進(jìn)去。QQ聯(lián)系我。
掃碼贊助:贊助二維碼。
技術(shù)交流QQ群:①群259217951,②群166848545
站長(zhǎng)郵箱:so@sojson.com
對(duì)頁(yè)面內(nèi)容有任何疑問和建議,請(qǐng)聯(lián)系我們。
所有贊助/開支都講公開明細(xì),用于網(wǎng)站維護(hù):贊助名單查看
正在加載... ...