分享ajax的三種解析模式
一、Ajax中的JSON格式
html代碼:
<html> <body> <input type="button" value="Ajax" id="btn"> <script> var btn = document.getElementById("btn"); btn.onclick = function(){ var xhr = getXhr(); xhr.open("post","10.php"); xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); /* * 在客戶端如何構(gòu)建JSON格式 * * 構(gòu)建符合JSON格式的字符串 */ var user = '{"name":"zhangwuji","pwd":"123456"}'; xhr.send("user="+user); xhr.onreadystatechange = function(){ if(xhr.readyState==4&&xhr.status==200){ var data = xhr.responseText; /* * 使用eval()函數(shù)進(jìn)行轉(zhuǎn)換 * * 使用"()"將其包裹,eval()函數(shù)強(qiáng)制將其轉(zhuǎn)換為JSON格式(javascript代碼) * * 不使用"()"將其包裹,eval()函數(shù)將其識(shí)別為一個(gè)空的代碼塊 */ var json = eval("("+data+")"); console.log(json); } } } function getXhr(){ var xhr = null; if(window.XMLHttpRequest){ xhr = new XMLHttpRequest(); }else{ xhr = new ActiveXObject("Microsoft.XMLHttp"); } return xhr; } </script> </body> </html>
PHP代碼:
<?php // 接收客戶端發(fā)送的請(qǐng)求數(shù)據(jù) $user = $_POST['user']; // 就是一個(gè)JSON格式的string字符串 //var_dump($user); $json_user = json_decode($user,true); //var_dump($json_user['name']); $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; //var_dump(json_decode($json)); // 響應(yīng)數(shù)據(jù)符合JSON格式的字符串 // 1. 手工方式構(gòu)建 //echo '{"name":"zhouzhiruo","pwd":"123456"}'; // 2. 使用json_encode()函數(shù) echo json_encode($json_user); ?>
二 Ajax中的XML格式
html頁面:
<html> <body> <input type="button" value="Ajax" id="btn"> <script> var btn = document.getElementById("btn"); btn.onclick = function(){ // 實(shí)現(xiàn)Ajax的異步交互 var xhr = getXhr(); xhr.open("post","07.php"); xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); /* * 如何構(gòu)建符合XML格式的請(qǐng)求數(shù)據(jù) * * 注意 * * 請(qǐng)求數(shù)據(jù)的格式 - key=value 不能改變的 * * 將value值構(gòu)建成符合XML格式的數(shù)據(jù) * * 數(shù)據(jù)類型 - 字符串(string) * * 格式符合XML的語法要求 * * 編寫注意 * * 定義變量 - 專門構(gòu)建XML格式的數(shù)據(jù) * * 在send()方法進(jìn)行拼串 */ var user = "<user><name>zhangwuji</name><pwd>123456</pwd></user>"; xhr.send("user="+user); xhr.onreadystatechange = function(){ if(xhr.readyState==4&&xhr.status==200){ // 接收服務(wù)器端的響應(yīng)數(shù)據(jù) var xmlDoc = xhr.responseXML; var nameEle = xmlDoc.getElementsByTagName("name")[0]; var txtEle = nameEle.childNodes[0]; console.log(txtEle.nodeValue); } } } function getXhr(){ var xhr = null; if(window.XMLHttpRequest){ xhr = new XMLHttpRequest(); }else{ xhr = new ActiveXObject("Microsoft.XMLHttp"); } return xhr; } </script> </body> </html>
PHP頁面代碼:
<?php // 接收客戶端發(fā)送的請(qǐng)求數(shù)據(jù) $user = $_POST['user'];//符合XML格式要求的string類型 //var_dump($user); // 創(chuàng)建DOMDocument對(duì)象 $doc = new DOMDocument(); // 調(diào)用loadXML()方法 $result = $doc->loadXML($user); //var_dump($doc); // 如何構(gòu)建符合XML格式的數(shù)據(jù) /* 修改響應(yīng)頭的Content-Type值為"text/xml" header('Content-Type:text/xml'); echo $user;// 符合XML格式的string類型 */ header('Content-Type:application/xml'); echo $doc->saveXML(); ?>
三 Ajax中的HTML格式
HTML頁面:
<html> <body> <select id="province"> <option>請(qǐng)選擇</option> <option>山東省</option> <option>遼寧省</option> <option>吉林省</option> </select> <select id="city"> <option>請(qǐng)選擇</option> </select> <script> /* * 需要思考哪些事情? * * 在什么時(shí)候執(zhí)行Ajax的異步請(qǐng)求? * * 當(dāng)用戶選擇具體的省份信息時(shí) */ // 1. 為id為province元素綁定onchange事件 var provinceEle = document.getElementById("province"); provinceEle.onchange = function(){ // 清空 var city = document.getElementById("city"); var opts = city.getElementsByTagName("option"); for(var z=opts.length-1;z>0;z--){ city.removeChild(opts[z]); } if(provinceEle.value != "請(qǐng)選擇"){ // 2. 執(zhí)行Ajax異步請(qǐng)求 var xhr = getXhr(); xhr.open("post","06.php"); xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); xhr.send("provcince="+provinceEle.value); xhr.onreadystatechange = function(){ if(xhr.readyState==4&&xhr.status==200){ // 接收服務(wù)器端的數(shù)據(jù)內(nèi)容 var data = xhr.responseText; // data是字符串,轉(zhuǎn)換為數(shù)組 var cities = data.split(","); for(var i=0;i<cities.length;i++){ var option = document.createElement("option"); var textNode = document.createTextNode(cities[i]); option.appendChild(textNode); city.appendChild(option); } } } } } // 定義創(chuàng)建XMLHttpRequest對(duì)象的函數(shù) function getXhr(){ var xhr = null; if(window.XMLHttpRequest){ xhr = new XMLHttpRequest(); }else{ xhr = new ActiveXObject("Microsoft.XMLHttp"); } return xhr; } </script> </body> </html>
php頁面:
<?php // 用于處理客戶端請(qǐng)求二級(jí)聯(lián)動(dòng)的數(shù)據(jù) // 1. 接收客戶端發(fā)送的省份信息 $province = $_POST['provcince']; // 2. 判斷當(dāng)前的省份信息,提供不同的城市信息 switch ($province){ case '山東省': echo '青島市,濟(jì)南市,威海市,日照市,德州市'; break; case '遼寧省': echo '沈陽市,大連市,鐵嶺市,丹東市,錦州市'; break; case '吉林省': echo '長春市,松原市,吉林市,通化市,四平市'; break; } // 服務(wù)器端響應(yīng)的是字符串 ?>
以上內(nèi)容是小編給大家分享ajax的三種解析模式,希望大家喜歡。
- AJAX的阻塞及跨域名解析
- jQuery Ajax 全解析
- 用JQuery 實(shí)現(xiàn)AJAX加載XML并解析的腳本
- Jquery ajax不能解析json對(duì)象,報(bào)Invalid JSON錯(cuò)誤的原因和解決方法
- Javascript(AJAX)解析XML的代碼(兼容FIREFOX/IE)
- jQuery Ajax使用 全解析
- 一步一步學(xué)asp.net Ajax登錄設(shè)計(jì)實(shí)現(xiàn)解析
- jquery ajax請(qǐng)求實(shí)例深入解析
- 淺析ajax請(qǐng)求json數(shù)據(jù)并用js解析(示例分析)
- jquery.Ajax()方法調(diào)用Asp.Net后臺(tái)的方法解析
相關(guān)文章
JQuery Ajax動(dòng)態(tài)生成Table表格
實(shí)現(xiàn)過程是這樣的:前臺(tái)通過jquery的ajax調(diào)用一般處理程序(Handler),獲取表格需要顯示的信息,然后轉(zhuǎn)換成json格式返回給前臺(tái),前臺(tái)獲取到數(shù)據(jù)后循環(huán)構(gòu)建表格的行,最好把行附加到表里。感興趣的朋友一起看看吧2015-09-09layui的checbox在Ajax局部刷新下的設(shè)置方法
今天小編就為大家分享一篇layui的checbox在Ajax局部刷新下的設(shè)置方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-08-08基于h5 ajax實(shí)現(xiàn)手機(jī)定位(demo)
最近沒有項(xiàng)目做,正有朋友請(qǐng)幫忙實(shí)現(xiàn)手機(jī)定位功能,實(shí)現(xiàn)方法有很多種,我是用h5和ajax實(shí)現(xiàn)的手機(jī)定位,只是個(gè)demo,后續(xù)還要繼續(xù)完善的,在此分享給大家,需要的朋友可以參考下2015-09-09ajax與傳統(tǒng)web開發(fā)的異同點(diǎn)
本文給大家介紹ajax與傳統(tǒng)web開發(fā)的異同點(diǎn),涉及到ajax、web方面的知識(shí),感興趣的朋友跟著小編一起學(xué)習(xí)吧2015-10-10js結(jié)合json實(shí)現(xiàn)ajax簡單實(shí)例
這篇文章主要為大家詳細(xì)介紹了js結(jié)合json實(shí)現(xiàn)ajax簡單實(shí)例的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05利用 FormData 對(duì)象和 Spring MVC 配合實(shí)現(xiàn)Ajax文件下載功能
這篇文章主要介紹了利用 FormData 對(duì)象和 Spring MVC 配合實(shí)現(xiàn)Ajax文件下載功能,需要的朋友可以參考下2017-08-08AJAX實(shí)現(xiàn)數(shù)據(jù)的增刪改查操作詳解【java后臺(tái)】
這篇文章主要介紹了AJAX實(shí)現(xiàn)數(shù)據(jù)的增刪改查操作,結(jié)合實(shí)例形式詳細(xì)分析了ajax結(jié)合java后臺(tái)實(shí)現(xiàn)數(shù)據(jù)庫增刪改查相關(guān)操作技巧,需要的朋友可以參考下2020-06-06