html+js+PHP(使用了smarty模板技术)+mysql实现二级动态下拉列表(select)

目标

需要的是在选择第一个select下拉列表后,将选择的内容传送到PHP页面。在PHP页面中通过查询数库,得到第二个select需要显示的option的值,并在select中显示。

方案

1  利用ajax上传数据到PHP,由于利用了smarty模板技术,可以直接给模板中的变量赋值,这样就可以不用通过ajax接收返回值再经过处理输出了。

由于这个PHP页面没有包含在其他PHP页面里,是独立的。这样就造成无法赋值。

2  通过ajax接收返回值,这里的返回值就是以上数据库查询的结果。

通过json_encode()将其转化为json格式,然后输出。

js中将responseText字符串转化为json格式——JSON.parse()函数实现。

遍历数组,并添加option给select。

本次使用的是方案2

部分代码

JS代码:

function get_value(form){
	var scid=sub_class.value;//运算类型号

//---------------------------------------
//使用ajax发送选中的运算类
	var url = "query_subject.php?scid="+scid;
	xmlhttp.onreadystatechange = Content;
//	var url = "query_subject.php?";
	xmlhttp.open("GET",url,true);
	xmlhttp.send(null);
//---------------------------------------
	function Content(){
		if(xmlhttp.readyState==4){
			if(xmlhttp.status==200){
				var sel=document.getElementById("sub_name");
				var rst=JSON.parse(xmlhttp.responseText);//将字符串转化为数组
				for(var i=0; i<rst.length; i++){
					var opt=document.createElement('option');
					opt.value=rst[i].sid;
					opt.text=rst[i].s_name;
					try
    				{
   	 				sel.add(opt,null); // standards compliant
    				}
  					catch(ex)
    				{
    					sel.add(opt); // IE only
    				}
				}
			}
			else{
				alert("你请求的页面错误");
			}
		}
	}

}

PHP代码:

?php
header ( "Content-type: text/html; charset=UTF-8" ); 	//设置文件编码格式
require_once("system/system.inc.php");  						//包含配置文件
$scid=$_GET['scid'];
$rst=null;
if($scid){
	$sql="select sid, s_name
	      from subject
	      where scid='$scid'";
	$rst=$admindb->ExecSQL($sql, $conn);
}
echo(json_encode($rst));
?>
时间: 2024-10-07 12:03:54

html+js+PHP(使用了smarty模板技术)+mysql实现二级动态下拉列表(select)的相关文章

smarty模板技术

smarty简介: smarty是php领域流行的一种模板技术,免费,其核心就是一个类(smarty类). 我们的主要目标就是学习怎么使用这个类. smarty的特点: 速度快(因为第二次执行的时候使用第一次执行时生成的编译文件) 缓存技术(正是因为缓存技术,使得smarty模板技术不太适合那些对于实时性更新要求比较高的,比如股票信息) 插件技术(正是因为插件技术,使得smarty可以被扩展) 编译型(访问一个页面一次之后会生成一个编译文件,第二次再来访问这个页面的时候,就会访问这个编译文件,从

smarty详细使用教程(韩顺平smarty模板技术笔记)

MVC是一种开发模式,强调数据的输入.处理.显示是强制分离的 Smarty使用教程1.如何配置我们的smarty解压后把libs文件夹放在网站第一级目录下,然后创建两个文件夹templates 存放模板文件templates_c 存放编译后的文件再创建初始化文件smarty.ini.php 注意事项:1.替换变量的标识分隔符一般使用<{}>改动分隔符的两个方法:1.改源码:Smarty.class.php $left_delimiter 不推荐2.动态修改:$Smarty->left_d

Smarty模板技术/引擎——变量操作(2)

1, 变量的分类 ① 从PHP中分配的变量,比如a.php跳转到b.php时候,可以在a.php中分配变量,b.tpl中直接调用.a.php中代码,$smarty->assign(‘str’,’hello world’);在b.tpl中代码,{$str}直接打印出hello world. index.php <?php require_once "./libs/Smarty.class.php"; $smarty = new Smarty(); $smarty->as

Smarty模板技术之foreach遍历数组实例全面讲解

一.item属性用法 <?php $arr = array(600, 851, 7412); $smarty->assign('testarrg', $arr); ?> 用Smarty中的foreach方法来遍历并输出这个数组 <dl> <dt>foreach中item属性用法</dt> {foreach from=$testarrg item=test} <dd>{$test}</dd> {/foreach} </dl&

Smarty模板技术/引擎——变量操作

1,基本变量 $smarty->assign('data1',3); $smarty->assign('data2',3.45); $smarty->assign('data3','fffff'); $smarty->assign('data41',true); $smarty->assign('data42',false); 整数:<{ $data1 }><br/> 小数:<{ $data2 }><br/> 字符串:<{

JS之模板技术(aui / artTemplate)

artTemplate是个好东西啊,一个开源的js前端模板引擎,使用简单,渲染效率特别的高. 我经常使用这个技术来在前端动态生成新闻列表,排行榜,历史记录等需要在前端列表显示的信息. 下面是artTemplate的下载链接: https://github.com/aui/artTemplate 因为artTemplate比较简单,容易上手,项目的例子,文档又比较齐全,大家有需要可以直接参考官方文档,例子进行深入了解, 我这里就这是用简单常用的,用于快速上手的一个例子吧! 先说明,我是下载artT

合并_08smarty模板技术(3days)

2013-12-9 昨天内容回顾 两个常用方法assign()和display() assign方法给模板传递变量信息(实际是把信息给到smarty对象属性里边) append方法给模板传递变量信息,和assign的区别是以数组形式传递给模板,可以使用名字一样的变量信息 display()方法展示模板, 后缀.html. 一般实际在使用的时候,模板的后缀习惯是 .tpl,这样别人就不会直接过来访问. 模板中3种变量使用 assign给模板传递的变量使用 系统保留变量 get post sessi

PHP Smarty 模板 变量访问 韩顺平 讲解

定界符重新定义 预防在模板中有js css 代码时 smarty模板引擎解析出现错误! 注意点: tpl页面模板中参数和值 在 php页面中对应关系. 例如 PHP页面代码 class Dog{     var $arrT;         function __construct($arr){         $this->arrT=$arr;     } } //一维索引数组 $arrA=array('beijing','shanghai','tianjin'); //实例化对象 $dog=

smarty模板引擎(一)基础知识

一.基本概念 1.什么是mvc? mvc是一种开发模式,核心思想是:数据的输入.数据的处理.数据显示的强制分离. 2.什么是smarty? smarty是一个php的模板引擎.更明确的来说,它可以帮助开发者更好的分离程序逻辑和页面显示. 3.smarty运行原理 模板文件,就是一个显示数据的模板,其中需要显示的数据用占位符代替. smarty运行时,会读取模板文件,将模板文件中的占位符替换成真正的数据,并输出一个处理后的php文件,交由服务器运行. 二.自己写一个smarty模板 为了更好的理解