php ajax 两个下拉菜单,用 PHPRPC 实现 Ajax 级联下拉菜单

用 PHPRPC 实现 Ajax 级联下拉菜单

2010-5-13文字大小:大中小

级联下拉菜单就是从一个下拉菜单中选中一项后,相应的另一个下拉菜单的内容会随之改动。

通常来说,最基本的,就是每次选中都提交一次表单,刷新整个页面。这也是用户体验度最差的。

另一种是把所有选项在第一次加载时就所有载入整个页面中的 JavaScript 数组中,然后级联议决 JavaScript 来控制,在整个数据量不大时,这是一个不错的实现无刷新并且高速的要领,但是当整个数据量特别大时,这种要领就会使第一次加载变得特别慢了。

还有就是采用 Ajax 方式,即开始只载入第一层菜单的内容,当用户选中第一层菜单的某项时,再议决 XmlHttpRequest 来获取相应选项所对应的第二层菜单的内容。这种方式成效最好,但是采用传统方式来编写这样的 Ajax 程序代码量会比较多。并且假如设计不好,服务器端返回菜单内容的程序的可复用性也会很差。

但是在本文中你会看到用 PHPRPC 来实现这种 Ajax 成效是多么的基本,并且还会具有特别高的可复用性。

本文以省市两级级联下拉菜单为例,为了举例方便,本文中采用的是 SQLite 数据库,因为这个文件型数据库比较基本 部署,并且查询效率很高(当然建立该数据库的效率不高,但建立仅一次而已,该数据库在该程序中内容是不变的),不过服务器须要安装 SQLite 扩展。

这个数据库中的表只有 2 个,一个 province 表,一个 city 表。province 表中,只有 id 和 name 两个字段,分别是省份编号(主键)和省名。city 表中,有 id、name 和 pid 三个字段,id 是城市编号,name 是城市名,pid 是城市所在省的编号,与 province 表中的省份编号相对应。

建立该数据库的程序这里就不给出来了,它包含在后面提供的实例下载中。

下面来看看建立这个程序的服务器端有多么基本,为了提高可复用性,咱们把服务器端分为了 2 个文件,一个是 function.php,另一个是 rpc.php。function.php 中定义了实际的远程调用函数,但是他们也能够作为服务器端的本地函数调用,你会发觉他们跟服务器端的普通函数没有任何区别:

下载: function.php<?php $sqlite = new SQLiteDatabase('area.db'); function get_province() {    global $sqlite;    $sql = "select * from province order by id";    return $sqlite->arrayQuery($sql, SQLITE_ASSOC);} function get_city($pid) {    global $sqlite;    $pid = sqlite_escape_string($pid);    $sql = "select * from city where pid = $pid order by id";    return $sqlite->arrayQuery($sql, SQLITE_ASSOC);}?>而 rpc.php 更加基本,它是提供给客户端调用的接口,它只有 3 行语句:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值