当前位置: 首页 > news >正文

ajax,json

一、JSON的一些基础知识。

JSON中对象通过"{}"来标识,一个"{}"代表一个对象,如{"AreaId":"123"},对象的值是键值对的形式(key:value)。

 "[]",标识数组,数组内部各个数据之间通过","分割,如["AreaId":"123","AreaId":"345"]。

很多情况下是对象数组,那就是这样:

 

[{"AreaId":"123"},{"AreaId":"345"}]

  其实数组也是一个对象,上面的格式也可以写成这样:

{"Area":[{"AreaId":"123"},{"AreaId":"345"}]}

  

这表示一个Area对象,他有两个子数据,每个子数据也是一个对象,每个子对象都是AreaId。

 JSON中字符串和字符的定义格式和一般的类C语言定义是类似的,双引号定义字符串,单引号定义字符。

JSON的键(Key)用双引号括起来,比如上面的"Area"和"AreaId",都是用双引号括起来的,在一些语言中构造JSON字符串的时候,可以使用转义字符转义双引号。

 二、javascript操作JSON字符

1、先要区分JSON字符串和JSON对象

JSON字符串:

Var strJSON = "{"Area":[{"AreaId":"123"},{"AreaId":"345"}]}",

  其实也可以写成这样:

Var strJSON = ‘{"Area":[{"AreaId":"123"},{"AreaId":"345"}]}',

  

这表示一个JSON字符串,由于在Js中单引号和双引号都可以表示一个字符串,所以上面第一个使用双引号和第二个使用单引号的都表示一个JSON字符串。

下面看看JSON对象

Var JSON = {"Area":[{"AreaId":"123"},{"AreaId":"345"}]},

  

看到了吧,JSON对象最外面是没有单引号或者双引号的,这就表示一个JSON对象。


在服务器断的脚本:

<?php
$data['id'] = 1;
$dat['name'] = "mary";
$da['red']= array_merge($data,$dat);
$data1['id'] = 2;
$dat1['name'] = "燕子";
$da['blue']= array_merge($data1,$dat1);
print_r($da);///打印出来是一个二维数组(如下)
/*
Array
(
    [red] => Array
        (
            [id] => 1
            [name] => mary
        )
    [blue] => Array
        (
            [id] => 2
            [name] => 燕子
        )
)
*/
echo json_encode($da);//输出的是一个转化成json格式的字符串,可以直接在js中用(如下)
/*
{"red":{"id":1,"name":"mary"},"blue":{"id":2,"name":"u71d5u5b50"}}
*/
?>

  

jquery脚本:

返回到js后的处理:
第一种要用到varl转化的:是字符串的时候就要用eval转化成jquery对象(如下)

 
var arr = '{"red":{"id":1,"name":"mary"},"blue":{"id":2,"name":"u71d5u5b50"}}';//u71d5u5b50这个是php中自动转换的
var dataObj = eval("("+arr+")");//这里要加上加好括号和双引号的原因我也不知道,就当是json语法,只能死记硬背了
  $.each(dataObj,function(idx,item){   
   //输出  
   alert(item.id+"哈哈"+item.name);   
})

  第二种:不需要转化的:

 
var arr = {"red":{"id":1,"name":"mary"},"blue":{"id":2,"name":"u71d5u5b50"}};
  $.each(arr,function(idx,item){     
   //输出
   alert(item.id+"哈哈"+item.name);
})

  循环也有两种方法:
//方法一:

 
$.each(arr,function(idx,item){     
   //输出
   alert(item.id+"哈哈"+item.name);
})

  //方法二:

for(var key in arr){
  alert(key);
  alert(arr[key].status);
 } 

  

大家可以试试效果。

ajax返回JSON时的处理方式

 1,使用普通的aspx页面来处理
       本人觉得这种方式处理起来是最简单的了,看下面的代码吧

$.ajax({ 
           type: "post", 
                                        url: "Default.aspx", 
                                        dataType: "json", 
                                        success: function (data) { 
                                                $("input#showTime").val(data[0].demoData); 
                                        }, 
                                        error: function (XMLHttpRequest, textStatus, errorThrown) { 
                                                alert(errorThrown); 
                                        } 
                                });
 

  这里是后台传递数据的代码

Response.Clear(); 
                        Response.Write("[{"demoData":"This Is The JSON Data"}]"); 
                        Response.Flush(); 
                        Response.End();
 

  这种处理的方式将传递过来的数据直接解析为json数据,也就是说这里的前台js代码可能直接把这些数据解析成json对象数据,而并非字符串数据,如data[0].demoData,这里就直接使用了这个json对象数据

转载于:https://www.cnblogs.com/junmoli/p/6699564.html

相关文章:

  • 修饰符
  • 网络中数据的传输过程
  • 如何把你的Windows PC变成瘦客户机
  • codevs 1086 栈(Catalan数)
  • Java设计模式---策略模式
  • 2017BUPT校赛 H-Black-white Tree
  • hibernate之复合主键作为外键的相关配置
  • js中match函数方法
  • 51NOD 1237 最大公约数之和 V3 [杜教筛]
  • 20169219 2016-2017-2 《移动平台开发》第七周作业
  • Verilog基础知识0(`define、parameter、localparam三者的区别及举例)
  • redis安装配置
  • U-Mail邮件中继针对性横扫邮件通关六大阻力
  • 博客、文章索引。
  • 洛谷P1508 Likecloud-吃、吃、吃 [2017年4月计划 动态规划10]
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • FastReport在线报表设计器工作原理
  • JavaScript DOM 10 - 滚动
  • JavaScript函数式编程(一)
  • Linux gpio口使用方法
  • log4j2输出到kafka
  • mac修复ab及siege安装
  • mysql_config not found
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • php中curl和soap方式请求服务超时问题
  • React系列之 Redux 架构模式
  • Selenium实战教程系列(二)---元素定位
  • SpriteKit 技巧之添加背景图片
  • swift基础之_对象 实例方法 对象方法。
  • vagrant 添加本地 box 安装 laravel homestead
  • vue 配置sass、scss全局变量
  • windows下如何用phpstorm同步测试服务器
  • 动态规划入门(以爬楼梯为例)
  • 翻译:Hystrix - How To Use
  • 面试总结JavaScript篇
  • 设计模式(12)迭代器模式(讲解+应用)
  • 深入浅出webpack学习(1)--核心概念
  • 突破自己的技术思维
  • 我建了一个叫Hello World的项目
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​ArcGIS Pro 如何批量删除字段
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ​第20课 在Android Native开发中加入新的C++类
  • #laravel 通过手动安装依赖PHPExcel#
  • #传输# #传输数据判断#
  • (javascript)再说document.body.scrollTop的使用问题
  • (第一天)包装对象、作用域、创建对象
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (二十四)Flask之flask-session组件
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • (转载)Linux网络编程入门
  • .NET Core 版本不支持的问题
  • .Net Remoting常用部署结构