博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jquery.post获取处理json数据
阅读量:5111 次
发布时间:2019-06-13

本文共 2457 字,大约阅读时间需要 8 分钟。

摘要:

  使用jquery.post获取json数据,并对返回的json数据进行处理。php相应post请求返回json数据,js将返回数据转换为json对象进行处理。

实现:

  前端:使用jquery.post请求数据

$.post(url,data,success(data))

  响应请求:使用php响应请求(前面借鉴了phpwind的响应ajax请求,所以返回的是xml格式数据)

$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);$output = json_encode($arr);//{"a":1,"b":2,"c":3,"d":4,"e":5}header("Content-Type: text/xml;charset=utf-8");echo "
";

  前端处理返回数据:首先取出xml中数节点值,然后将其转换为json对象

function success(result){    if(typeof(result) == "object"){        result = result.lastChild.firstChild.nodeValue;//xml取节点值        eval("result = "+result);//转换为json对象    }    ....}

 

相关知识点:

  PHP中的JSON 

  1、json_encode():该函数主要用来将数组和对象,转换为json格式

$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);echo json_encode($arr);//{"a":1,"b":2,"c":3,"d":4,"e":5}
$obj->body = 'another post';$obj->id = 21;$obj->approved = true;$obj->favorite_count = 1;$obj->status = NULL;echo json_encode($obj);/*$obj->body = 'another post';$obj->id = 21;$obj->approved = true;$obj->favorite_count = 1;$obj->status = NULL;echo json_encode($obj);*/

 

  注:json只能是utf-8编码,son_encode()的参数必须是utf-8编码,否则会得到空字符或者null

 

  2、索引数组和关联数组

  索引数组

$arr = Array('one', 'two', 'three');echo json_encode($arr);//"[]"(数组)//["one","two","three"]

  关联数组

$arr = Array('1'=>'one', '2'=>'two', '3'=>'three');echo json_encode($arr);//"{}"(对象) //{"1":"one","2":"two","3":"three"}

  将"索引数组"强制转化成"对象"

json_encode( (object)$arr );//或//json_encode ( $arr, JSON_FORCE_OBJECT );

 

  3、类(class)的转换

  公开变量(public),其他东西(常量、私有变量、方法等等)都遗失

class Foo {    const ERROR_CODE = '404';    public $public_ex = 'this is public';    private $private_ex = 'this is private!';    protected $protected_ex = 'this should be protected';     public function getErrorCode() {      return self::ERROR_CODE;    }}$foo = new Foo;$foo_json = json_encode($foo);echo $foo_json;//{"public_ex":"this is public"}

  4、json_decode()
  将json文本转换为相应的PHP数据结构
  json_decode()总是返回一个PHP对象
  如果想要强制生成PHP关联数组,json_decode()需要加一个参数true

$json = '{"foo": 12345}';$obj = json_decode($json);print $obj->{'foo'}; // 12345

 

  5、注意

  1)、json只能用来表示对象(object)和数组(array),如果对一个字符串或数值使用json_decode(),将会返回null
  2)、json的分隔符(delimiter)只允许使用双引号,不能使用单引号
  3)、json名值对的"名"(冒号左边的部分),任何情况下都必须使用双引号
  4)、最后一个值之后不能添加逗号(trailing comma)

 

   处理返回json数据

  将返回数据转换为json,私用eval(),但报"invalid label"错误,解决方法

 

var json = eval('(' + response + ')'); //或 eval('var json = ' + response);

 

 

 

参考:

  [1]

  [2]

 

转载于:https://www.cnblogs.com/ccdc/archive/2012/04/24/2467664.html

你可能感兴趣的文章
Blender Python UV 学习
查看>>
window添加右键菜单
查看>>
入手腾龙SP AF90mm MACRO
查看>>
Window7上搭建symfony开发环境(PEAR)
查看>>
Linux内核态、用户态简介与IntelCPU特权级别--Ring0-3
查看>>
第23月第24天 git命令 .git-credentials git rm --cached git stash clear
查看>>
java SE :标准输入/输出
查看>>
一些方便系统诊断的bash函数
查看>>
jquery中ajax返回值无法传递到上层函数
查看>>
css3之transform-origin
查看>>
[转]JavaScript快速检测浏览器对CSS3特性的支持
查看>>
Master选举原理
查看>>
[ JAVA编程 ] double类型计算精度丢失问题及解决方法
查看>>
小别离
查看>>
微信小程序-发起 HTTPS 请求
查看>>
WPF动画设置1(转)
查看>>
基于node/mongo的App Docker化测试环境搭建
查看>>
秒杀9种排序算法(JavaScript版)
查看>>
struts.convention.classes.reload配置为true,tomcat启动报错
查看>>
MySQL的并行复制多线程复制MTS(Multi-Threaded Slaves)
查看>>