[转]PHP与Javascript之间复杂结构数据的传递

news/2024/7/8 3:13:22

 

[转]PHP与Javascript之间复杂结构数据的传递


说道Ajax其实质就是通过Javascript向服务器提交请求,获得服务器返回的信息,然后再使用Javascript进行处理,更新网页,从而实现最明显的表现,无刷新更改网页内容。其中Jvascript与服务器脚本语言之间的信息传递是很重要的一个部分,一般来说这一部分应该由XML承担,但是一般却不一定非得传递XML,数组、字符串甚至对象也都可以传递,这里讨论一下PHP和Javascript之间复杂结构数据的传递问题。

  用过Sajax0.10(目前官方公开的最新版)的朋友应该知道,如果直接在PHP的函数中return一个数组,或者通过Javascript向服务器端传递一个数组,在另一端是没法处理的,这是为什么呢?其实很容易理解,不同的语言之间数组的结构是不一样,当然这不只是数组,还包括对象等等。

  举一个很简单的例子,PHP数组array(1,2,3)在Javascript的格式是[1,2,3],你可以写一个简单的html来验证,内容类似于下面给出的。你访问看看弹出窗口显示的内容。同理对象等其他的复杂元素也是如此。 

普通文本
JavaScript:
  1. <script language= >
  2. var v;
  3. v = [ 1, 2, 3 ];
  4. alert (v [ 1 ] );
  5. </script>

  解决这个问题最好的方法是JSON(JavaScript Object Notation),因为这里是讨论PHP嘛,所以我们关心的是JSON in PHP——JSON-PHP和PHP-JSON。JSON-PHP是一个类,可以从PEAR网站获得;PHP-JSON是PHP的module,虽然安装module可以一劳永逸的解决数据结构转换问题,但是毕竟不是所有人都有独立服务器,可以随意安装module的,所以我们主要关心的是JSON-PHP。

  官方已经给出了例子,很好理解
建立对象:

普通文本
PHP:
  1.  
  2. require_once ( 'JSON.php' );
  3. $json = new Services_JSON ( );

将PHP变量(这里是$value)转换成Javascript格式:

普通文本
PHP:
  1. $value = $json-> encode ( $value );

将Javascript格式的变量(这里是$value)转换成PHP的格式:

普通文本
PHP:
  1. $value = $json-> decode ( $value )

  如果不用JSON那么如何处理复杂结构数据呢?那就需要在传递之前把数据变成基本的字符串,得到的字符串再经过处理变成原始的类型就可以用咯,例如一维数组可以这样处理:

  首先定义一种基本上不会在数据中出现的字符串作为分割符,这里用的是~~|~~:

普通文本
PHP:
  1. define ( 'SPLITE_VAR', '~~|~~' );
普通文本
JavaScript:
  1. var splite_var = " ";

  传递一维数组value_array之前用~~|~~把数组变成由上面的分隔符分割的字符串value:

普通文本
PHP:
  1. $value = implode (SPLITE_VAR, $value_array );
普通文本
JavaScript:
  1. var value = value_array. join (splite_var );

  得到字符串value后根据分隔符把字符串分割成数组value_array,然后可以使用这个数组进行下一步操作:

普通文本
PHP:
  1. $value_array = explode (SPLITE_VAR, $value );
普通文本
JavaScript:
  1. var value_array = value. split (splite_var );

  上面只是简单的处理思路,其他类型的数据则需要你自己来灵活处理咯:icon_em04:。

  Sajax0.11可以自动转换格式哦~xajax因为直接由方法控制Javascript的显示,估计不需要这样的数据传递,使用XML传输的只需要对XML进行解析就是了,不过这方面我没有实践过。

  最后,希望本文能够有点用处吧。

from: http://www.flyinghail.net/archives/10

 





http://www.niftyadmin.cn/n/3652402.html

相关文章

复习归纳网络知识点——OSI七层参考模型和TCP/IP参考模型

学习内容OSI参考模型OSI各层的主要功能TCP/IP参考模型TCP/IP的协议TCP与UDP数据包的封包TCP、UDP、IP相关协议和端口号OSI参考模型 OSI&#xff08;Open System Interconnect&#xff09;&#xff0c;即开放系统互联。通常我们叫OSI参考模型&#xff0c;是由ISO&#xff08;国…

[转]介绍 JSON

介绍 JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。JSON采用完全独立于语言的文本格式&#xff0c;但…

整数进制转换、IP地址必知必会!!!!

整数进制转换、IP地址必知必会整数进制转换数制基数位权转换IP地址必知必会IP地址简介IP地址的组成子掩网码IP地址段分类公有地址与私有地址有效主机容量的计算整数进制转换 数制 数制也称计数制&#xff0c;是用一组固定的符号和统一的规则来表示数值的方法。人们通常采用的…

[转]基于反向代理的Web缓存加速 ——可缓存的CMS系统设计

基于反向代理的Web缓存加速 ——可缓存的CMS系统设计作者&#xff1a; 车东 Email: chedongATbigfoot.com/chedongATchedong.com写于&#xff1a;2003/05 最后更新&#xff1a; 02/22/2006 14:42:55内容摘要&#xff1a;对于一个日访问量达到百万级的网站来说&#xff0c;速…

计算机网络原理应用必知必会——网络基础知识

网络基础知识信号与传输介质信号信号分类信号的区别&#xff1a;传输介质有线传输介质无线传输介质信号与传输介质 信号 信号是数据的表现形式&#xff0c;是运载消息的工具&#xff0c;是消息的载体。 信号分类 分为模拟信号和数字信号 模拟信号 模拟信号是指用连续变化的…

[转]直接用php创建word文档

直接用php创建word文档 作者&#xff1a;axgle <axgleyahoo.com.cn> 首先用$word->start()表示要生成word文件了。 然后你可以输出任何的HTML代码&#xff0c;不 论是从文件读过来再写到这里&#xff0c; 还是直接在这里输出HTML&#xff0c;都没有关系。 等你输出完毕…

计算机网络知识点————交换机

交换机的基本知识点一、数据链路层数据链路层的作用以太网帧格式二、以太网交换机交换机工作原理交换机以太网接口的工作模式三、交换机基本配置配置前的连接交换机命令一、数据链路层 数据链路层的作用 &#xff08;1&#xff09;数据链路的建立、维护与拆除 &#xff08;2&…

[转]SnowDB文件索引数据库系统

帖子来源这里&#xff1a;http://perlchina.sun126.com/cgi-bin/ccb/topic_view.cgi?forum6&article_id0006050531225335&publishtime_id0006050531225335&page15&floor0该数据库实现代码在这里&#xff1a;http://perlchina.sun126.com/noncgi/usr/affix/050…