亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

javascript和php使用ajax通信傳遞JSON的實例

2019-11-19 13:12:11
字體:
來源:轉載
供稿:網友

JS和PHP直接通信常用ajax完成,以實現js上UI的動態變化。通信使用JSON或者XML傳遞數據。下面詳細描述兩者直接JSON字符串的傳遞。

下面案例是要傳遞這樣的json數據:

{ "bookid": "558a6be36c72a" ,  "resitems": [  {   "res_id": "558a6bff6bd55",   "res_name": "IMG_8421.jpg",   "src_origin": "558a6bff6bd55.jpg",   "src_hd": "558a6bff6bd55_hd_1920_1280.jpg",   "src_sd": "558a6bff6bd55_sd_1024_682.jpg",   "src_td": "558a6bff6bd55_td_300_200.jpg"  },  {   "res_id": "558a6c4a716a2",   "res_name": "IMG_8477.jpg",   "src_origin": "558a6c4a716a2.jpg",   "src_hd": "558a6c4a716a2_hd_1920_1280.jpg",   "src_sd": "558a6c4a716a2_sd_1024_682.jpg",   "src_td": "558a6c4a716a2_td_300_200.jpg"  } ] }

ajax:

首先要熟悉ajax的用法,它是連接瀏覽器和服務器的橋梁。

一般用法如下:

$.ajax({  type:"POST",  url:"SQLHelper.php",  dataType:'json',  async:false,  data:{'json':jsonStr}  });

其中type的類型可以是GET和POST,url是服務器處理的腳本程序。dataType類型有text,json,xml等等,async通常使用false,data是具體要傳遞的json字符串,并且給服務器post一個叫做json字段的數據,PHP端可以$_POST['json']就可以獲取post過來的數據。如果需要接收返回數據,

 var req= $.ajax({  type:"POST",  url:"SQLHelper.php",  dataType:'json',  async:false,  data:{'json':jsonStr}  });var response=req.responseText;

上面使用ajax實現了一次普通的客戶端到服務器的一次數據傳遞。下面的問題是怎么去獲得上面的jsonStr呢?像開篇提及的那種json字符串怎么才能生成的問題 附:如果遇到含有中文的url 如下操作:

location=encodeURI('content_p.html?id='+catalogid+'&title='+bookTitle+'&thumb='+bookThumb); 

JavaScript->PHP:

使用js數組來完成json對象的封裝:

var arrX={resitems:[]};  arrX.bookid=bookid;  for (var i=0; i < cellList.length; i++) {   var item=cellList[i];   var jsonRes={};   jsonRes.bookid=bookid;   jsonRes.res_id=item.itemStruct.id;   jsonRes.res_name=item.itemStruct.name;   jsonRes.src_origin=item.itemStruct.src;  jsonRes.src_hd=item.itemStruct.src_hd;  jsonRes.src_sd=item.itemStruct.src_sd;  jsonRes.src_td=item.itemStruct.src_td;  arrX.resitems.push(jsonRes); };  var jsonResStr=JSON.stringify(arrX);

上面的代碼是先創建arrX的json對象,對對象添加各種屬性、變量等。最后通過stringify轉化為字符串,這個獲得的字符串jsonResStr就是一個普通字符串了,可以通過ajax傳遞到服務器了,值得注意的是,這里如果有中文,那是沒問題的,不會出現亂碼問題。在完成了JOSN封裝之后,開始使用ajax傳遞到PHP頁面

  $.ajax({   type:"POST",   url:"SQLHelper.php",   dataType:"json",   async:false,   data:{'jsonResPanel':jsonResStr},   success:function(json){}  });

php對接收到的json數據解析并且寫入到數據庫:

if (isset($_POST['jsonResPanel'])) {  $data=$_POST['jsonResPanel'];  $arr=(array)(json_decode($data));  $items=(array)($arr['resitems']);  $bookid=$arr['bookid'];  $sql="";  for ($i=0; $i < count($items); $i++) {    $value=(array)($items[$i]);   $bookid=$value['bookid'];   $res_id=$value['res_id'];   $res_name=$value['res_name'];   $src_origin=$value['src_origin'];   $src_hd=$value['src_hd'];   $src_sd=$value['src_sd'];   $src_td=$value['src_td'];   $sql.="insert into resourcesheet(bookid,res_id,res_name,src_origin,src_hd,src_sd,src_td)values   ('{$bookid}','{$res_id}','{$res_name}','{$src_origin}','{$src_hd}','{$src_sd}','{$src_td}');";  }  $sqli=new SQLHelper('ugumanage');  //先刪除bookid下所有資源  $sqlDelete="delete from resourcesheet where bookid='{$bookid}'";  $sqli->execute_dml($sqlDelete);  $sqli->multi_execute_dml($sql);  $sqli->close_connect(); }

需要注意的是第三號在拿到json字符串之后便使用json_decode函數解析成對象,這個時候只是一個普通php對象,無法給我提供有效信息,需要將它強制轉換為數組array即可變為我們熟悉的php數組,在拿到信息的數組之后,我們便可以像操作普通php數組那樣提取json傳遞過來的所有信息了,上面代碼將json的部分信息添加到數據庫的一張表里邊,當然如果傳遞的json字符串過長,建議使用GZip在客戶端對字符串壓縮之后再傳遞,接收端解壓縮即可。

PHP->JavaScript:

如果客戶端需要查詢數據庫的數據,必然需要要求服務器查詢,由php將查詢結果通過json返回給客戶端。

首先客戶端通過ajax發送查詢請求給php

var request=$.ajax({url:'SQLHelper.php?loadResPanel='+bookid,async:false});
var jsonStr=request.responseText; 

第二行表示得到了查詢結果,下面來看看在php端是怎么生成這個結果并返回的。

if (isset($_REQUEST['loadResPanel'])) {  $bookid=$_REQUEST['loadResPanel'];  $sqli=new SQLHelper('ugumanage');  $arr=array();  $arrItems=array();  $arrInfo=array();  $head=urlencode("http://{$_SERVER['HTTP_HOST']}/cloud/");   $sql0="select *from contentsheet where bookid='{$bookid}'";  $res0=$sqli->execute_dql($sql0);  while ($row0=$res0->fetch_assoc()) {   $catalogid=$row0['catalogid'];   $bookid=$row0['bookid'];   $title=urlencode($row0['title']);  }  $sql1="select *from resourcesheet where bookid='{$bookid}'";  $res1=$sqli->execute_dql($sql1);  while ($row1=$res1->fetch_assoc()) {   $item=array('bookid'=>$row1["bookid"],'res_id'=>$row1['res_id'],'res_name'=>urlencode($row1["res_name"]),   'src_origin'=>$row1["src_origin"],'src_hd'=>$row1["src_hd"],'src_sd'=>$row1["src_sd"],'src_td'=>$row1["src_td"]);   array_push($arrItems,$item);  }  $arrInfo['head']=$head;  $arrInfo['catalogid']=$catalogid;  $arrInfo['bookid']=$bookid;  $arrInfo['title']=$title;  $arr['info']=$arrInfo;  $arr['items']=$arrItems;  $json=urldecode(json_encode($arr)) ;  echo $json;  $sqli->close_connect(); }

值得注意的是第七行這種,遇到特殊符號或者中文字符,在php端需要將它們統一轉碼,具體轉成了什么,我們不用關心,只需要知道在外面套一個urlencode函數就可以了。創建json同樣是使用數組,編制好數組之后,通過json_encode可以直接將其轉化為json字符串。這里在返回給客戶端之前,仍然需要再使用urldecode解碼,這樣傳遞出來的json字符串才不會有亂碼現象。

客戶端接收到json字符串后同樣需要對它進行解析成javascript對象。

var request=$.ajax({url:'SQLHelper.php?loadResPanel='+bookid,async:false}); var jsonStr=request.responseText; var jsonObj=JSON.parse(jsonStr); var info=jsonObj.info; var items=jsonObj.items; document.getElementById('textBox').value=info.title; for (var i=0; i < items.length; i++) {   var item=new UploadItemStruct();  item.id=items[i].res_id;  item.head=info.head;  item.name=items[i].res_name;  // item.type=$(this).attr('type');  item.src=items[i].src_origin;  item.src_hd=items[i].src_hd;  item.src_sd=items[i].src_sd;  item.src_td=items[i].src_td;  addCellSubThree(document.getElementById("divPanel"),item);  }; 

注意的是第四行。解析json的關鍵方法是JSON.parse方法,json字符串變成javascript對象之后,便可以任意提取json傳遞過來的訊息了。

以上這篇javascript和php使用ajax通信傳遞JSON的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国外成人在线直播| 国产精品igao视频| 欧美wwwxxxx| 欧美另类xxx| 国产精品草莓在线免费观看| 国产丝袜一区二区三区免费视频| 91国产视频在线播放| 狠狠做深爱婷婷久久综合一区| 欧美成人性生活| 亚洲精品www| 日韩电影在线观看中文字幕| 日韩专区中文字幕| 伊人亚洲福利一区二区三区| 欧美精品18videosex性欧美| 午夜精品福利视频| 欧美性生交xxxxx久久久| 日韩精品免费在线观看| 亚洲第一视频网| 欧美日韩日本国产| 国产精品成人av性教育| 欧美高跟鞋交xxxxxhd| 日韩av在线直播| 热门国产精品亚洲第一区在线| 97精品视频在线播放| 亚洲在线免费观看| 在线观看亚洲视频| 正在播放欧美视频| 日韩欧美国产免费播放| 中文字幕一区电影| 亚洲综合大片69999| 日韩av日韩在线观看| 日韩成人小视频| 亚洲片在线观看| 日韩国产欧美精品一区二区三区| 亚洲激情在线观看| 热re91久久精品国99热蜜臀| 国产精品影院在线观看| 亚洲精品98久久久久久中文字幕| 欧美人与物videos| 亚洲欧美国产日韩天堂区| 国产日产欧美精品| 91福利视频在线观看| 国产精品久久久久久网站| 97国产真实伦对白精彩视频8| 国产精品欧美风情| 午夜精品蜜臀一区二区三区免费| 一本久久综合亚洲鲁鲁| 国产不卡在线观看| 91精品国产免费久久久久久| 成人www视频在线观看| 日韩一区二区在线视频| 日本19禁啪啪免费观看www| 欧美成人激情在线| 91精品久久久久久久久久久久久久| xxx一区二区| 精品国产欧美一区二区五十路| www.久久色.com| 欧美精品久久久久久久免费观看| 国精产品一区一区三区有限在线| 欧美性20hd另类| 欧美视频不卡中文| 成人中文字幕在线观看| 成人高h视频在线| 亚洲国产97在线精品一区| 欧亚精品中文字幕| 日韩成人在线视频观看| 777777777亚洲妇女| 成人一区二区电影| 亚洲一区免费网站| 精品国内产的精品视频在线观看| 狠狠色狠色综合曰曰| 欧美黑人性生活视频| 亚洲美女av网站| 日韩视频免费观看| 97视频人免费观看| 亚洲激情自拍图| 亚洲网在线观看| 97精品国产aⅴ7777| 日韩中文字幕久久| 69视频在线播放| 国产亚洲欧洲高清一区| 亚洲欧洲美洲在线综合| 亚洲欧美自拍一区| 精品福利一区二区| 国产美女精品免费电影| 狠狠色狠狠色综合日日小说| 日韩欧美在线看| 91久久国产精品| 欧美精品亚州精品| 国产成人激情小视频| 久久久久久久一区二区三区| 亚洲毛茸茸少妇高潮呻吟| 亚洲午夜av久久乱码| 日韩av中文字幕在线播放| 久久夜色撩人精品| 57pao国产成人免费| 午夜精品久久久久久久99黑人| 亚洲最大的成人网| 亚洲精品视频久久| 九九视频这里只有精品| 国产精品自拍偷拍视频| 国产精品高清在线观看| 亚洲香蕉伊综合在人在线视看| 在线亚洲男人天堂| 日韩高清不卡av| 国产精品海角社区在线观看| 亚洲天堂第二页| 欧美另类高清videos| 午夜精品蜜臀一区二区三区免费| 亚洲天堂一区二区三区| 国产精品人人做人人爽| 久久精品国产69国产精品亚洲| 亚洲精品影视在线观看| 亚洲网站在线看| 国产精品专区第二| 成人xvideos免费视频| 午夜欧美不卡精品aaaaa| 色yeye香蕉凹凸一区二区av| 97精品国产97久久久久久春色| 乱亲女秽乱长久久久| 亚洲欧美在线免费观看| 国产视频在线观看一区二区| 亚洲午夜av久久乱码| 黑人巨大精品欧美一区免费视频| 亚洲成人aaa| 国产精品老牛影院在线观看| 日韩三级成人av网| 欧美大人香蕉在线| 久久亚洲精品视频| 国外成人在线直播| 亚洲欧洲一区二区三区在线观看| 一本色道久久综合狠狠躁篇的优点| 九九热在线精品视频| 欧美国产日韩在线| 久久久久久一区二区三区| 一区二区亚洲欧洲国产日韩| 福利一区视频在线观看| 久久精品电影一区二区| 亚洲欧美日本精品| 亚洲欧美在线x视频| 国产69精品久久久久99| 欧美巨猛xxxx猛交黑人97人| 亚洲欧美国内爽妇网| 成人在线观看视频网站| 日韩hd视频在线观看| 亚洲成人a级网| 国产中文字幕亚洲| 欧美高清在线播放| 菠萝蜜影院一区二区免费| 欧美色另类天堂2015| 欧美丰满片xxx777| 精品日韩视频在线观看| 欧美一区二区三区免费视| 91亚洲精品久久久久久久久久久久| 性色av一区二区三区免费| 国产偷国产偷亚洲清高网站| 91日本在线观看| 亚洲国产成人久久| 亚洲激情电影中文字幕| 在线视频欧美日韩精品| 亚洲福利视频网站| 国模私拍视频一区| 色综合久久88色综合天天看泰| 日韩av手机在线看|