目录
回复讨论(解决方案)
首页 后端开发 php教程 下拉联动问题

下拉联动问题

Jun 23, 2016 pm 01:55 PM
下拉 联动

省和市的联动,省市的内容都是从数据库里取出来的,
现在是选择了省,对应的市出来之后,省又回到最初的值,选择的值保存不住,因为画面又刷新了。
有什么办法能保存住省,或者不用画面刷新?

下面是部分代码

<p class="Fld"><label class="label" for="state">省</label><span class="control"><select id="state" class="req1" name="Prefecture"  onchange="getCitySubmit();"> 		<!--{html_options options=$provinceList}-->        </select></span></p><p class="Fld"><label class="label" for="city">市</label><span class="control"><select id="city" class="req1" name="City" >            <!--{html_options options=$cityList}-->        </select></span></p>
登录后复制

//初期,绑定省 public function action()    {    	$retArr=array();    	//省取得    	$retArr=$this->qaModel->getProvince();    	if(count($retArr)>0)    	{    		foreach ($retArr as $key => $i)    		{    		   $provinceList[$i["PROVINCE_KEY"]] = $i["PROVINCE_NAME"];    		}    	}    	//取得したデ?タを?定      	$this->_smarty->assign("provinceList", $provinceList);    	// お?い合わせ画面を表示する 这步显示画面submit.html    	$this->_smarty->render($this->_language."/submit");    }//联动,绑定市 public function cityAction()    {    	$province_key=$this->_context->query("province_key", "");    	$this->log->info($province_key);    	$retArr=array();    	//省取得    	$retArr=$this->qaModel->getCity($province_key);    	if(count($retArr)>0)    	{    		foreach ($retArr as $key => $i)    		{    			$cityLis[$i["CITY_KEY"]] = $i["CITY_NAME"];    		}    	}    	//取得したデ?タを?定    	$this->_smarty->assign("cityList", $cityLis);    	// お?い合わせ画面を表示する  这步再回到初期,这样的话省就重新绑定了    	$this->action();    }
登录后复制


回复讨论(解决方案)

日文? 不刷新很定要ajax传值呀

参考Ajax:

<?php#action.phpif(isset($_GET['id'])){	$sql="select * from table where id=".$_GET['id'];	$res=mysql_query($sql);	if(!$res) die("SQL: {$sql} <br>Error:".mysql_error());	if(mysql_affected_rows() > 0){		$arrMenu=array();		while($rows = mysql_fetch_array(MYSQL_ASSOC)){			array_push($arrMenu,$rows);		}	}	mysql_close();	if(!empty($arrMenu)){		echo "<select name='menu2'>";		foreach($arrMenu as $item2){			echo "<option value='{$item2['id']}'>{$item2['name']}</option>";		}		echo "</select>";	}}?>
登录后复制

<form name="frm"><select name="s1" onChange="redirec(this.value)"> <option selected>请选择</option> <option value="1">天文</option> <option value="2">地理</option> <option value="3">算术</option></select><div id="s2"></div></form><script>$("select").live("change",function(){			$.ajax({				  type: "GET",				  url: "action.php",				  data: "id="+$(this).val(),				  cache: false,				  success: function(text){				    $("#show").append(text);				  }			});		});
登录后复制

这是ajax的事。

こんにちは。


你要把选中的省市id传一下。

こんにちは。


你要把选中的省市id传一下。



弄是弄好了,还是刷新的。

你这乱七八糟的日文是什么网站?日本的? 日本用都道府县 市区町村。
建议用ajax做。这样速度快点 不用每次刷新。




function Linkage(obj,id) {
var param = {};
param.mst_state_id = obj;
$.ajax({
type : "POST"
, url : " php"
, data : $.param(param)
, dateType : "xml"
, success : function(xml) {
var selects = $("select[id="+id+"]");
$(selects)[0].length=0;
$(selects)[0].options[0]=new Option("市区町村","0");
$("category", xml).each(function(){
var id = $("id", this).text();
var name = $("name", this).text();
$(selects)[0].options.add(new Option(name, id));
});
}
});
}

url : "php" 这里是接受都道府县的id的php 注意路径
这个php 最后输出

$str = "";
foreach ($m_state2 as $key => $val) {
$str .= "" . $key . "" . $val . "";
}
header("Content-Type:text/xml; charset=utf-8");
echo ''.mb_convert_encoding($str, "utf-8").'';
exit;

你这乱七八糟的日文是什么网站?日本的? 日本用都道府县 市区町村。
建议用ajax做。这样速度快点 不用每次刷新。



{html……



是中国的网站,有三种语言版本

你这乱七八糟的日文是什么网站?日本的? 日本用都道府县 市区町村。
建议用ajax做。这样速度快点 不用每次刷新。


mst_state_id 是你的select的属性。这个随便起名字,只要能统一就行。改成你的state也可以。

引用 2 楼 的回复:

参考Ajax:
PHP code
#action.php
if(isset($_GET['id'])){
$sql="select * from table where id=".$_GET['id'];
$res=mysql_query($sql);
if(!$res) die("SQL: {$sql}
Error:".mysq……



<form name="frm"><select name="s1" onChange="record(this.value)"> <option selected>请选择</option> <option value="1">天文</option> <option value="2">地理</option> <option value="3">算术</option></select><div id="show"></div></form><!--Ajax属于js应用,当然要放在script标签中,两种写法jQuery和JavaScript--><script>//Ajax-jquery,必须加载jQuery库:jquery_1.4.2.jsdocument.write("<script src='jquery_1.4.2.js'></script>");$("select").live("change",function(){			$.ajax({				  type: "GET",				  url: "action.php",				  data: "id="+$(this).val(), //这里的id获取的是select选中的value值				  cache: false,				  success: function(text){				    $("#show").append(text);				  }			});		});//Ajax-javascriptvar xmlHttp;	function createXMLHttpRequest() {		if(window.XMLHttpRequest) {			xmlHttp = new XMLHttpRequest();		} else if (window.ActiveXObject) {			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");		}	}	function record(id){  //这里的id获取的是select选中的value值		createXMLHttpRequest();		url = "action.php?id="+id+"&ran="+Math.random();		method = "GET";		xmlHttp.open(method,url,true);		xmlHttp.onreadystatechange = show;  //利用回调函数返回php处理后的数据		xmlHttp.send(null);	}	function show(){		if (xmlHttp.readyState == 4){			if (xmlHttp.status == 200){				var text = xmlHttp.responseText;				document.getElementById("show").innerHTML = text;  //这里将php返回的数据写入html中id=show的标签中			}else {				alert("response error code:"+xmlHttp.status);			}		}	}</script>
登录后复制

引用 8 楼 的回复:

引用 2 楼 的回复:

参考Ajax:
PHP code
#action.php
if(isset($_GET['id'])){
$sql="select * from table where id=".$_GET['id'];
$res=mysql_query($sql);
if(!$res) die("SQL: {$sql} ……




我只是想联动一下,怎么会这么麻烦呢,我都看不懂啊,拷进去也改不对。。。

“jquery_1.4.2.js”是不是还需要这个文件,还是只要有这句话就可以了?

好痛苦啊

你想用ajax就要加载jquery文件的。
需要那个文件 要把它加载到你的html文件里面 写对路径。


写在head头里就行。

这个能测试,至于能懂多少就看你的了,先会用,再慢慢琢磨

<?php/* Created on [2012-7-4] Author[Newton] */#Ajax_select.php 此php和html要分为两个页面if(isset($_GET['id'])){	#$arrMenu数组可以是数据库查询的结果数组等任意二维数组	$arrMenu=array(		array('id'=>3,'name'=>'Tom'),		array('id'=>2,'name'=>'Lily'),		array('id'=>1,'name'=>'Smith'),	);	echo "<select name='menu2'>";	foreach($arrMenu as $item2){		echo "<option value='{$item2['id']}'";		if($item2['id']==$_GET['id'])			echo "selected";		echo " >{$item2['name']}</option>";	}	echo "</select>";}?>
登录后复制

<html> <head>  <title>测试Variable Modifiers</title> </head> <body><form name="frm"><select name="s1" onChange="record(this.value)"> <option selected>请选择</option> <option value="1">天文</option> <option value="2">地理</option> <option value="3">算术</option></select><div id="show"></div></form><script language='javascript'>//Ajaxvar xmlHttp;	function createXMLHttpRequest() {		if(window.XMLHttpRequest) {			xmlHttp = new XMLHttpRequest();		} else if (window.ActiveXObject) {			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");		}	}	function record(id){		createXMLHttpRequest();		url = "Ajax_select.php?id="+id+"&ran="+Math.random();		method = "GET";		xmlHttp.open(method,url,true);		xmlHttp.onreadystatechange = show;		xmlHttp.send(null);	}	function show(){		if (xmlHttp.readyState == 4){			if (xmlHttp.status == 200){				var text = xmlHttp.responseText;				document.getElementById("show").innerHTML = text;			}else {				alert("response error code:"+xmlHttp.status);			}		}	}</script> </body></html>
登录后复制

你可以使用$_GET,或者$_getJson来处理,方便

这个能测试,至于能懂多少就看你的了,先会用,再慢慢琢磨
PHP code

/* Created on [2012-7-4] Author[Newton] */
#Ajax_select.php 此php和html要分为两个页面
if(isset($_GET['id'])){
    #$arrMenu数组可以是数据库查询的结果数组等任意二维数组
    $arrMenu=arr……


onChange="record(this.value)" 取不到value值。。

会报一个警告,オブジェクトを指定してください。
我以为是参数传错了,后来发现把参数去掉也报这个错

谢谢各位,搞定了

会报一个警告,オブジェクトを指定してください。
我以为是参数传错了,后来发现把参数去掉也报这个错


出这个问题是什么情况?怎么解决啊,楼主
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

征途IPx经典动画《西游记》 西行征途无畏无惧 征途IPx经典动画《西游记》 西行征途无畏无惧 Jun 10, 2024 pm 06:15 PM

穿越苍茫征途,踏足西游之境!今日,征途IP正式宣布将与央视动画《西游记》展开跨界合作,共同打造一场融合了传统与创新的文化盛宴!此次携手,不仅标志着两大国产经典品牌的深度合作,更彰显了征途系列在弘扬中国传统文化道路上的不懈努力与坚持。征途系列自诞生以来,便凭借其深厚的文化底蕴和多元化的游戏玩法,受到玩家们的喜爱。在文化传承方面,征途系列更是始终保持着对中国传统文化的敬意与热爱,将传统文化元素巧妙地融入游戏,为玩家们带来了更多的乐趣和启发。而央视动画《西游记》则是陪伴了一代又一代人成长的经典之作,其

双厨狂喜!《阴阳师》X《初音未来》联动3月6日开启 双厨狂喜!《阴阳师》X《初音未来》联动3月6日开启 Feb 22, 2024 pm 06:52 PM

网易《阴阳师》手游在今日宣布,阴阳师×初音未来限定联动将于3月6日正式开始。联动限定SSR初音未来(CV:藤田咲)、SSR镜音铃·连(CV:下田麻美)即将降临平安京!联动线上特别演出活动3月9日在游戏内正式开启~

经典重聚,逆转时空《天龙2》X《大话西游》电影联动决定 经典重聚,逆转时空《天龙2》X《大话西游》电影联动决定 Mar 28, 2024 pm 04:40 PM

经典重聚,逆转时空。《天龙2》手游与经典电影《大话西游》携手定档4月11日!恰逢《天龙2》手游周年庆典,邀请大家共同重温经典回忆,再次见证至尊宝与紫霞至死不渝的传奇故事。七彩祥云要有,金甲圣衣也要有当那句“般若波罗蜜”回荡在耳边时,你是否会想起紫霞留在至尊宝心底的那一滴眼泪?一眼万年,却难逃宿命之劫。纵使万劫不复,吾爱至死不渝。大话西游联动外观【一眼万年】【天意】将随周年庆版本同步上线。愿你可以身披金甲圣衣又或可以邂逅自己的盖世英雄,重回至情至性的青春年少。五百年守护,真爱至死不渝那日偶遇洛阳说

炸鸡大业,不容差池!《逆水寒》联动肯德基尬上天,玩家社死'闻鸡起舞” 炸鸡大业,不容差池!《逆水寒》联动肯德基尬上天,玩家社死'闻鸡起舞” Apr 17, 2024 pm 06:34 PM

日期,《逆水寒》官宣将于4月19号-5月12号与肯德基展开联动,但联动的具体内容却让很多人蚌埠住了,连番直说“尬上天了”、“要社死了”!原因就出在这次主题活动的口号上,曾经见识过《原神》《崩铁》肯德基联动的小伙伴肯定有印象,什么“异世相遇、尽享美味”,到了《逆水寒》这里就成了:对店员喊出「神候府查案,尔等何人?」店员需回答「炸鸡大业,不容差池!」对员工的培训指南:绝对不能笑!不止这个,这次联动还办起了舞蹈大赛,到主题店做出“闻‘基’起舞”舞蹈动作,还能获得一个摇摇乐小立牌。尬,太尬了!但就是要这

Java开发表单字段的联动与依赖功能 Java开发表单字段的联动与依赖功能 Aug 07, 2023 am 08:41 AM

Java开发表单字段的联动与依赖功能引言:在Web开发中,表单是经常使用到的一种交互方式,用户可以通过表单填写信息并提交,而繁琐、冗余的表单字段选择操作往往会给用户带来不便。因此,表单字段的联动和依赖功能被广泛应用于提升用户体验和操作效率。本文将介绍如何使用Java开发实现表单字段的联动和依赖功能,并提供相应的代码示例。一、表单字段联动功能的实现表单

《暗黑破坏神:不朽》X《仙剑奇侠传》联动决定! 《暗黑破坏神:不朽》X《仙剑奇侠传》联动决定! Apr 17, 2024 pm 02:58 PM

网易游戏在今天宣布,《暗黑破坏神:不朽》决定联动《仙剑奇侠传》。4月24日“一剑逍遥”开启不朽修仙新时代!一个是西方魔幻的经典之作,一个是东方仙侠的永恒回忆,暗黑宇宙与仙剑江湖时空交错,两大IP携手斩妖除魔。4月24日,关于正义与侠道的不灭传说将在庇护之地上演!

元梦之星奥特曼正版联动:赛罗泽塔共鸣奥特之力,迸发热血火花! 元梦之星奥特曼正版联动:赛罗泽塔共鸣奥特之力,迸发热血火花! Feb 24, 2024 pm 02:25 PM

元梦之星奥特曼正版联动系列,赛罗泽塔同款时装细节今日大公开,相信大家已经期待很久了,与赛罗泽塔联名时装已于今日上线,一起跟随小编来看看本次奥特曼联动的更多细节,希望能够给你带来帮助。元梦之星奥特曼正版联动:赛罗泽塔共鸣奥特之力,迸发热血火花!赛罗作为光之国新一代的年轻奥特战士终极赛罗警备队的队长赛罗奥特曼不羁又善良,热情又奔放“有我在身边,你还不放心吗?赛罗会尽全力保护星宝星宝们快穿上赛罗奥特曼时装,与赛罗一起奋勇战斗吧!细节展示建模动作展示出场动作待机动作泽塔我才不是三分之一的半吊子,我是宇宙

如何结合ECharts和php接口实现多图表联动的统计图展示 如何结合ECharts和php接口实现多图表联动的统计图展示 Dec 18, 2023 am 10:07 AM

在数据可视化的领域中,ECharts作为一款被广泛使用的前端图表库,其强大的数据可视化功能受到了各个行业的追捧。在实际项目中,经常会遇到需要对多个图表进行联动展示的情况,本文将介绍如何结合ECharts和PHP接口实现多图表联动的统计图展示,并给出具体的代码示例。一、前置技能在本文的实践中,需要掌握以下技能:HTML、CSS、JavaScript的基础知识;

See all articles