jquery遍歷ajax返回的json數據

我們以前在前端遍歷ajax拿到的數據一般都是用for或其他方式遍歷,這樣做麻煩且費事,效率不高,下面提供一個函數,只需調用函數即可把數據遍歷出來,方便高效。

html代碼:

<html>
<head><script type="text/javascript" src="./jquery.js"></script>
</head>
<body><qweewq><ul><li>{list.name}</li>   <li>{list.info}</li> <!-- <li>{name}</li><li>{info}</li> --></ul></qweewq><a href="#">asd</a>
</body>
</html>

jquery函數:

/*把josn數據遍歷到html頁面中author:程威明參數 :dom:包圍需要遍歷的html內容的標簽(名稱自定義,盡量復雜,不可跟常用的html標簽名相同)data:ajax返回的json數據  (必須由ajax返回且類型為json)    data_type:數據格式(1,2),兩種:1:{"status":0,"name":["1","2","3"],"info":["a","b","c"]}2:{"status":0,"list":[{"name":"1","info":"a"},{"name":"2","info":"b"},{"name":"3","info":"c"}]}如果是格式2,html代碼中的標識格式必須為{list.name}set_cookie:是否把數據保存到cookie(默認為false,不保存),保存的格式為{"name":[1,2,3],"info":["a","b","c"]}cookie_name:存儲cookie的name,若數據類型為1即默認為cookie_json,若數據類型為2即默認為數據列表的key,如上面數據類型例子中的list
*/removeCookie('firstdom');//刷新頁面即清除這個cookie$.extend({'eachjson':function(dom,data,data_type,set_cookie,cookie_name){/**-------- 這部分都是為了方便用于ajax分頁 ----------------------------**//**- [ajax分頁](http://blog.csdn.net/codercwm/article/details/51508848) ---**/if(!getCookie('firstdom'))//把原始的html代碼存入cookie{var firstdom = htmlEncode($(dom).html());setCookie('firstdom',firstdom);}if(getCookie('firstdom'))//在cookie中獲得{$('qweewq').html(getCookie('firstdom'));}/**--------------------------------------------------**/var get_html = $(dom).html();    //獲取自定義標簽包圍的html內容var json_length = 0;if(data_type==1){var html_s = each_json_data_type1(get_html,json_length,data,set_cookie);        //如果為數據格式為1即調用函數1,否則調用函數2}else{var html_s = each_json_data_type2(get_html,json_length,data,set_cookie);}$(dom).html(html_s);        //把原html替換為已有數據的html}});function each_json_data_type1(get_html,json_length,data,set_cookie,cookie_name)
{if(set_cookie){var cookie_json = JSON.stringify(data).replace(/"status":(.*?),/,'')if(!cookie_name){var cookie_name = 'cookie_json';}setCookie(cookie_name,cookie_json);}for(var check_length in data){if(data[check_length].length>json_length){json_length = data[check_length].length;}}var html_s = '';for(var i=0;i<json_length;i++){var html_one = get_html;$.each(data,function(k,v){        //遍歷json中的key和valueif(v[i]){var val = v[i];}else{var val = '';}html_one = html_one.replaceAll('{'+k+'}',val);  //把html中的標識替換為json數據中的內容});html_s += html_one;}return html_s;
}function each_json_data_type2(get_html,json_length,data,set_cookie,_cookie_name)
{/***  作用:例如:把html代碼中的{list.name}中的list匹配出來  *******/var preg = /{(.*?)\./;                      var key_list = get_html.match(preg);var key = key_list[1];/*********  end  ********************/json_length = data[key].length;var html_s = '';/*  作用:把key中的數組中的json取出放到對應的地方 *****************/var cookie_val = new Array();var cookie_key = new Array();var m = 0;$.each(data[key],function(index_key,value){var html_one = get_html;var n = 0;cookie_val_one = new Array();$.each(value,function(k,v){        //遍歷json數組中的key和valueif(v){var val = v;}else{var val = '';}html_one = html_one.replaceAll('{'+key+'.'+k+'}',val);        //把html中的標識替換為json數據中的內容//把k和v保存到數組中if(set_cookie) {if(i=(json_length-1)){cookie_key[n] = k;}cookie_val_one[n] = v;}n++;});if(set_cookie) cookie_val[m] = cookie_val_one;      //把v保存成二維數組html_s += html_one;m++;});if(set_cookie){var cookie_json = '{';var len = cookie_key.length;for(var j=0;j<len;j++){var cookie_value = new Array();for(var i=0;i<cookie_val.length;i++){cookie_value[i] = cookie_val[i][j];}cookie_json += ',"'+cookie_key[j]+'":'+'["'+cookie_value.join('","')+'"]';}cookie_json += '}';var newstr = cookie_json.split("");newstr[1] = '';     //把第一個‘,’刪掉cookie_json = newstr.join("");if(!cookie_name){var cookie_name = key;}setCookie(cookie_name,cookie_json);}/*  end ************************/return html_s;
}//設置或添加cookie
function setCookie(name,value)
{ var str = name + "=" + value;document.cookie = str;
}//獲取cookie  
function getCookie(name)
{  //cookie中的數據都是以分號加空格區分開  var arr = document.cookie.split("; ");  for(var i=0; i<arr.length; i++){  if(arr[i].split("=")[0] == name){  return arr[i].split("=")[1];  }}//未找到對應的cookie則返回空字符串  return '';  
}//刪除cookie  
function removeCookie(name)
{   document.cookie = name+"=;expires="+(new Date(0)).toGMTString();
}//字符竄替換所有
String.prototype.replaceAll  = function(s1,s2)
{    return this.replace(new RegExp(s1,"gm"),s2);    
}//html字符編碼
function    htmlEncode(str)  
{  var s = "";if (str.length == 0) return "";s = str.replace(/&/g, ">");s = s.replace(/</g, "<");s = s.replace(/>/g, ">");s = s.replace(/ /g, " ");s = s.replace(/\'/g, "'");s = s.replace(/\"/g, "");s = s.replace(/\n/g, "");return s;
}  //html字符解碼
function    htmlDecode(str)  
{  var s = "";if (str.length == 0) return "";s = str.replace(/>/g, "&");s = s.replace(/</g, "<");s = s.replace(/>/g, ">");s = s.replace(/ /g, " ");s = s.replace(/'/g, "\'");s = s.replace(/"/g, "\"");s = s.replace(/<br>/g, "\n");return s; 
}

test.php中的代碼:

<?php
//echo '{"status":0,"name":["aa","bb","cc","dd","ee"],"info":[1,2,3,4,5]}';
echo '{"status":0,"list":[{"name":"1","info":"a"},{"name":"2","info":"b"},{"name":"3","info":"c"}]}';

ajax代碼:

$.ajax({url:'http://localhost/test.php',type:'post',dataType:'json',         //必須為jsondata:{data:1},success:function(res){$.eachjson('qweewq',res,2,1); //調用函數(qweewq為包圍要遍歷的html代碼的自定義標簽)var aaa = getCookie('cookie_json');       //獲取cookie中的數據var bbb = eval("(" + aaa + ")");         //轉成json對象$('a').html(bbb.name[0])}});

最后瀏覽器中輸出的結果為:
這里寫圖片描述

轉載于:https://www.cnblogs.com/codercwm/p/10135061.html

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

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

相關文章

Apache JMeter:隨心所欲進行負載測試

這是有關使用Apache JMeter進行負載測試的第二篇文章&#xff0c;請在此處閱讀第一篇文章&#xff1a; 有關對關系數據庫進行負載測試的分步教程。 JMeter有很多采樣器 。 如果您需要JMeter不提供的采樣器&#xff0c;則可以編寫自定義采樣器。 &#xff08;自定義采樣器在JMet…

html5歷史管理

在網易云課堂上看了妙味課堂的關于html5歷史管理的課程&#xff0c;在這里做一下筆記。 單頁面或ajax局部刷新的頁面中&#xff0c;沒有辦法通過前一步和后一步得到歷史訪問數據&#xff0c;此時有兩種方法可以解決這個問題&#xff1a; 1.onhashchange事件&#xff0c;示例代碼…

elementui下拉框 清空_巧妙解決element-ui下拉框選項過多的問題

1. 場景描述不知道你有沒有這樣的經歷&#xff0c;下拉框的選項很多&#xff0c;上萬個選項甚至更多&#xff0c;這個時候如果全部把數據放到下拉框中渲染出來&#xff0c;瀏覽器會卡死&#xff0c;體驗會特別不好用人會說element-ui的select有一個remote-method&#xff0c;支…

致敬詞

見義勇為致敬詞 面對災難和死神&#xff0c;你們大義凜然、知險而上&#xff0c;把平安和生機留給他人&#xff0c;把困難和危險留給自己。巍巍乎高山景行&#xff0c;錚錚然鐵骨俠風&#xff1b;壯志譜傳奇&#xff0c;熱血寫春秋。你們是&#xff1a;百姓英雄&#xff0c;平安…

MOXy作為您的JAX-RS JSON提供程序–客戶端

最近&#xff0c;我發布了如何利用EclipseLink JAXB&#xff08;MOXy&#xff09;的JSON綁定來創建RESTful服務。 在本文中&#xff0c;我將演示在客戶端利用MOXy的JSON綁定有多么容易。 MOXy作為您的JAX-RS JSON提供程序–服務器端 MOXy作為您的JAX-RS JSON提供程序–客戶端 …

經常使用計算機的孩子,常玩電腦對孩子負面影響大,家長們不容小覷!

相信不少的家庭都會備有電腦&#xff0c;人們在網絡世界里面能夠找到自己需要的東西。不僅是大人喜歡玩電腦&#xff0c;小孩也喜歡玩電腦。然而常玩電腦對孩子負面影響大嗎&#xff1f;有多大&#xff1f;一、行為問題全國青少年教育協會指出&#xff0c;5歲以下的使用電腦的孩…

基于SpringBoot的養老院管理系統

文章目錄 項目介紹主要功能截圖:部分代碼展示設計總結項目獲取方式?? 作者主頁:超級無敵暴龍戰士塔塔開 ?? 簡介:Java領域優質創作者??、 簡歷模板、學習資料、面試題庫【關注我,都給你】 ??文末獲取源碼聯系?? 項目介紹 基于SpringBoot的養老院管理系統,java項…

外呼機器人起名_智能外呼機器人,目前都有哪些公司做產品?

做智能外呼機器人的企業現在已經挺多了&#xff0c;比如各個答案中提到的各家的產品。它的市場認可度也比較高&#xff0c;大家都知道它能用于通知、回訪、問卷調查、營銷等業務場景。外呼機器人的價值很好衡量&#xff0c;用了外呼機器人后&#xff0c;能給企業賺多少錢&#…

VMware下ubuntu與Windows實現文件共享的方法

最近安裝caffe需要將Windows下文件拷貝到ubuntu16.04下&#xff0c;就進行了共享文件夾的設置&#xff0c;期間遇到一些困難&#xff0c;記錄下來&#xff0c;方便以后遇到此類問題不再困惑。 &#xff08;記錄只為更好的分享&#xff09; 言歸正傳&#xff1a; 1、首先需要在u…

前端開發流程

一般都是在我們開發一個項目之前我們會進行一個討論會&#xff0c;然后一起分析一下這個項目應該怎么去做&#xff0c;那些地方可以用最新的一些技術&#xff0c;那些技術有兼容問題&#xff0c;哪些可以實現&#xff0c;哪些不可以實現&#xff0c;這些討論完以后&#xff0c;…

TestNG和Maven配置指南

為了有用&#xff0c;自動測試應該運行得非常快。 否則&#xff0c;將不會在開發期間經常運行&#xff0c;甚至在開發人員工作站的默認配置中將被忽略。 最簡單的規則是僅編寫小型單元測試&#xff0c;該測試將模擬給定類的鄰居。 但是&#xff0c;有時在IoC容器上下文&#xf…

微型計算機廣告牌實驗報告,微型計算機實驗報告1資料.doc

實驗報告1. 實驗名稱程序編譯及調試2. 實驗目的掌握匯編語言語句格式&#xff0c;程序結構&#xff0c;上機調試步驟和各種類型程序的設計方法。了解匯編語言的基本語法&#xff0c;匯編程序的功能和匯編&#xff0c;調試過程&#xff0c;偽指令&#xff0c;匯編語言程序設計&a…

mybatis入門-新手注意問題

參數問題 在映射文件中通過parameterType指定輸入參數的類型&#xff1b;在映射文件中通過resultType指定輸出結果的類型。 占位符和拼接符問題 #{}表示一個占位符號&#xff0c;#{}接收輸入參數&#xff0c;類型可以是簡單類型&#xff0c;pojo、hashmap。 如果接收簡單類型&a…

python文件管理包_Python標準庫04 文件管理 (部分os包,shutil包)

Python標準庫04 文件管理 (部分os包&#xff0c;shutil包)在操作系統下&#xff0c;用戶可以通過操作系統的命令來管理文件&#xff0c;參考。Python 標準庫則允許我們從 Python 內部管理文件。相同的目的&#xff0c;我們有了兩條途徑。盡管在 Python 調用標準庫的方式不如操作…

Delphi Berlin 10.1 for iOS 成生 info.plist 順序改變了

在 Delphi Seattle 10 update 1 版本&#xff08;含之前版本&#xff09;&#xff0c;只要 Project > Build 會立即生成 info.plist 如果需要修改 info.plist 可以利用 TMS 提供的修改工具 Fixing on iOS 9 來修改。 在 Delphi Berlin 10.1 版本&#xff0c;順序改變了&…

MANIFEST.MF和feature.xml版本控制規則

我永遠忘記了OSIF插件和功能的 MANIFEST.MF和feature.xml中的依賴項聲明的規則是什么。 谷歌搜索經常導致沮喪而不是答案。 所以&#xff0c;因為今天我實際上找到了這些規則的簡要列表&#xff0c;所以我想在這里重新發布它們&#xff0c;并進行一些小的修改以幫助闡明。 OSGi…

遠程桌面連接時無法訪問遠程計算機的計算機屬性提示系統調用失敗,遠程過程調用失敗【應對技巧】...

喜歡使用電腦的小伙伴們一般都會遇到win7系統遠程過程調用失敗的問題&#xff0c;突然遇到win7系統遠程過程調用失敗的問題就不知道該怎么辦了&#xff0c;其實win7系統遠程過程調用失敗的解決方法非常簡單&#xff0c;按照1&#xff1a;第一步我們可以看到sql server數據庫出現…

MVC View顯示詳解(RenderBody,RenderPage,RenderSection,Partial)

一、Views文件夾 -> Shared文件夾下的 _Layout.cshtml 母版頁 RenderBody 當創建基于_Layout.cshtml布局頁面的視圖時&#xff0c;視圖的內容會和布局頁面合并&#xff0c;而新創建視圖的內容會通過_Layout.cshtml布局頁面的RenderBody()方法呈現在標簽之間。 RenderPage從…

如何在Windows系統下安裝多個Redis實例

如何在Windows系統下安裝多個Redis實例 轉載于:https://www.cnblogs.com/xiaohui1990/p/5505944.html

注冊表中shell文件不見了_win7系統注冊表中的shell文件不小心被刪除的解決方法...

我們在操作電腦的時候,win7系統注冊表中的shell文件不小心被刪除的問題對于我們來說其實是比較少見的&#xff0c;一般情況下的正常使用都不會遇到win7系統注冊表中的shell文件不小心被刪除的狀況。但在win7系統中如果由于我們個人的不當操作導致win7系統注冊表中的shell文件不…