這次帶給大家原生js怎麼呼叫json,原生js呼叫json的注意事項有哪些,下面就是實戰案例,一起來看一下。
Ajax基礎
ajax:無重新整理資料讀取,讀取伺服器上的資訊
GET:用於取得資料,如瀏覽貼文
ajax.judgeXmlHttpRequest('get', 'index.php', function(data){ alert(data); //这是服务器返回的数据 })
POST:用於上傳資料,如使用者註冊
var dataJson = { name: 'ys',age: 123 } ajax.judgeXmlHttpRequest('post', 'index.php', function(data){ alert(data); //这是服务器返回的数据 },dataJson)
GET:透過網址傳遞(放入url中),會將傳遞的資料放到網址上面,名字=值&名字=值
get方式容量小,安全性低,有快取
POST:不透過網址傳遞
post容量較大,一般可達2G,安全性相對較高,沒有快取
原生Ajax的編寫
Ajax運行步驟
建立一個Ajax物件
非IE6瀏覽器:
var oAjax=new XMLHttpRequest();
IE6瀏覽器:
var oAjax=new ActiveXObject("Microsoft.XMLHTTP");
#連線到伺服器
Ajax.open(方法,文件名,异步传输);
封鎖快取方法:
Ajax.open('GET','a.txt?t='+new Date().getTime(),true);
同步:js中指事情必須一件一件來
非同步:js中指多件事情要一起做
ajax是做非同步傳輸的,並不是同步
傳送請求
Ajax.send();
接收回傳值
要求狀態監控:onreadystatechange事件:當自己的Ajax與伺服器之間有通訊時觸發,主要透過readyState屬性來判斷結束沒有,結束了也沒有代表成功,status屬性來判斷
readyState屬性:請求狀態
0(未初始化)還沒有呼叫open方法
1(載入)已經呼叫send()方法,正在傳送請求
2(載入完成)send()方法完成,已經收到全部對應內容
3(解析)正在解析收到的回應內容
4(完成)回應內容解析完成,可以在客戶端呼叫(完成並不一定成功,需要status來偵測是成功還是失敗)
status屬性:
請求結果,是成功(200)還是失敗(404):Ajax.status==200
傳回值responseText:
從伺服器傳回的文字:Ajax.responseText(傳回的值是一個字串,有時需要進一步處理成其他格式的形式)
oAjax.onreadystatechange=function(){ //oAjax.readyState: 表示浏览器和服务器之间进行到哪一步了 if(oAjax.readyState==4){ //读取完成 if(oAjax.status==200){ //读取的结果是成功 alert('成功:'+oAjax.responseText); } } }
將原生Ajax封裝成一個函數使用,最終編寫的原生Ajax為:
GET方法封裝的函數為:
function ajax(url,fnSuccess,fnFaild){ //1.创建Ajax对象。js中,使用一个没有定义的变量会报错,使用一个没有定义的属性,是undefined。IE6下使用没有定义的XMLHttpRequest会报错,所以当做window的一个属性使用 if (window.XMLHttpRequest) { var oAjax=new XMLHttpRequest();//非IE6 }else{ var oAjax=new ActiveXObject("Microsoft.XMLHTTP");//IE6 } //2.连接到服务器 oAjax.open('GET',url,true); //3.发送请求 oAjax.send(); //4.接收返回值 oAjax.onreadystatechange=function(){ //oAjax.readyState--浏览器和服务器之间进行到哪一步了 if(oAjax.readyState==4){ //读取完成 if(oAjax.status==200){ //读取的结果是成功 fnSuccess(oAjax.responseText); //成功时执行的函数 }else{ if(fnFaild){ //判断是否传入失败是的函数,即用户是否关心失败时的结果 fnFaild(oAjax.responseText); //对失败的原因做出处理 } } } } }
POST方法封裝的函數為:
function ajaxPost(url,id,fnSuccess,fnFaild){ //1.创建Ajax对象 if (window.XMLHttpRequest) { var xhr=new XMLHttpRequest();//非IE6 }else{ var xhr=new ActiveXObject("Microsoft.XMLHTTP");//IE6 } //2.连接到服务器 xhr.open("POST",url,true); //设置头信息 xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); var form=document.getElementById(id); //3.发送请求,传递数据 xhr.send(serialize(form)); xhr.onreadystatechange=function(){ if(xhr.readyState==4){ if ((xhr.status>=200 && xhr.status<p style="text-align: left;">字元集編碼:網頁和被要求的檔案的編碼要相同,如都是utf8</p><p style="text-align: left;">快取,阻止快取(經常改變的資料等,不能夠快取.主要用於GET方法),傳參時在路徑後面加?+'可變的資料' 可以不影響原始資料</p><pre class="brush:php;toolbar:false">ajax('a.txt?t='+new Date().getTime(),function(str){ alert(str); },function(str){ alert(str); });
ajax請求動態資料:如json檔案
#1 ajax傳回值是一個字串,可透過eval轉換後來讀取傳回的陣列/json資料
alert(str); alert(typeof(str)); var arr=eval(str); alert(typeof(arr)); alert(arr[1]); alert(arr[1].c);
2 結合DOM建立元素,來顯示傳回的內容
oBtn.onclick=function(){ ajax('data/arr3.txt?t='+new Date().getTime(),function(str){ var arr=eval(str); for (var i = 0; i '+arr[i].user+'密码:<span>'+arr[i].pass+'</span>'; oUl.appendChild(oLi); } },function(str){ alert(str); }); }
資料型別-->傳回的資料型別可能是xml(幾乎已經淘汰),json(現在常用)
下面來看個我最近剛寫原生js透過get方法呼叫json的例子:
if(!isNaN(matchId)) { var xmlHttp = null; try {// Chrome, Firefox, Opera, Safari xmlHttp = new XMLHttpRequest(); }catch (e) { try {// Internet Explorer IE 6.0+ xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try {// Internet Explorer IE 5.5+ xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { alert("your browser not support ajax!"); } } } window.onload = function () { xmlHttp.open("get",/api/clientMatch/commonMatchDiagram.json?matchId=" + matchId,true); xmlHttp.send(); xmlHttp.onreadystatechange = doResult; //设置回调函数 }; function doResult() { var html=''; if ((xmlHttp.readyState == 4)&&(xmlHttp.status == 200)) {//4代表执行完成,200代表执行成功 var data = JSON.parse(xmlHttp.responseText); if(data.code == 200){ //代码执行 } document.getElementById('appMatch').innerHTML = html; } } }
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
以上是原生js怎麼呼叫json的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python和JavaScript的未來趨勢包括:1.Python將鞏固在科學計算和AI領域的地位,2.JavaScript將推動Web技術發展,3.跨平台開發將成為熱門,4.性能優化將是重點。兩者都將繼續在各自領域擴展應用場景,並在性能上有更多突破。

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。

是的,JavaScript的引擎核心是用C語言編寫的。 1)C語言提供了高效性能和底層控制,適合JavaScript引擎的開發。 2)以V8引擎為例,其核心用C 編寫,結合了C的效率和麵向對象特性。 3)JavaScript引擎的工作原理包括解析、編譯和執行,C語言在這些過程中發揮關鍵作用。

JavaScript是現代網站的核心,因為它增強了網頁的交互性和動態性。 1)它允許在不刷新頁面的情況下改變內容,2)通過DOMAPI操作網頁,3)支持複雜的交互效果如動畫和拖放,4)優化性能和最佳實踐提高用戶體驗。

C 和JavaScript通過WebAssembly實現互操作性。 1)C 代碼編譯成WebAssembly模塊,引入到JavaScript環境中,增強計算能力。 2)在遊戲開發中,C 處理物理引擎和圖形渲染,JavaScript負責遊戲邏輯和用戶界面。

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver CS6
視覺化網頁開發工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!