目錄
回复讨论(解决方案)
首頁 後端開發 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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
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)

熱門話題

Java教學
1670
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1274
29
C# 教程
1256
24
旅程IPx經典動畫《西遊記》 西行旅程無畏無懼 旅程IPx經典動畫《西遊記》 西行旅程無畏無懼 Jun 10, 2024 pm 06:15 PM

穿越蒼茫征途,踏足西遊之境!今日,征途IP正式宣布將與央視動畫《西遊記》展開跨界合作,共同打造一場融合了傳統與創新的文化盛宴!此次攜手,不僅標誌著兩大國產經典品牌的深度合作,更彰顯了征途系列在弘揚中國傳統文化道路上的不懈努力與堅持。征途系列自誕生以來,便憑藉其深厚的文化底蘊和多元化的遊戲玩法,受到玩家們的喜愛。在文化傳承方面,征途系列更是始終保持著對中國傳統文化的敬意與熱愛,將傳統文化元素巧妙地融入遊戲,為玩家們帶來了更多的樂趣與啟發。而央視動畫《西遊記》則是陪伴了一代又一代人成長的經典之作,其

炸雞大業,不容差池! 《逆水寒》聯動肯德基福上天,玩家社死'聞雞起舞” 炸雞大業,不容差池! 《逆水寒》聯動肯德基福上天,玩家社死'聞雞起舞” Apr 17, 2024 pm 06:34 PM

日期,《逆水寒》官宣將於4月19號-5月12號與肯德基展開聯動,但聯動的具體內容卻讓許多人蚌埠住了,連番直說「民上天了」、「要社死了」!原因就出在這次主題活動的口號上,曾經見識過《原神》《崩鐵》肯德基聯動的小伙伴肯定有印象,什麼“異世相遇、盡享美味”,到了《逆水寒》這裡就成了:對店員喊出「神候府查案,爾等何人?」店員需回答「炸雞大業,不容差池!」對員工的訓練指南:絕對不能笑!不只這個,這次聯動還辦起了舞蹈大賽,到主題店做出「聞『基』起舞」舞蹈動作,還能獲得一個搖搖樂小立牌。民,太民了!但就是要這

雙廚狂喜! 《陰陽師》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》手遊週年慶典,邀請大家共同重溫經典回憶,再次見證至尊寶與紫霞至死不渝的傳奇故事。七彩祥雲要有,金甲聖衣也要有當那句「般若波羅蜜」迴盪在耳邊時,你是否會想起紫霞留在至尊寶心底的那一滴眼淚?一眼萬年,卻難逃宿命之劫。縱使萬劫不復,吾愛至死不渝。大話西遊連結外觀【一眼萬年】【天意】將隨週年慶版本同步上線。願你可以身披金甲聖衣又或可以邂逅自己的蓋世英雄,重回至情至性的青春年少。五百年守護,真愛至死不渝那日偶遇洛陽說

《暗黑破壞神:不朽》X《仙劍奇俠傳》聯動決定! 《暗黑破壞神:不朽》X《仙劍奇俠傳》聯動決定! Apr 17, 2024 pm 02:58 PM

網易遊戲在今天宣布,《暗黑破壞神:不朽》決定聯動《仙劍奇俠傳》。 4月24日「一劍逍遙」開啟不朽修仙新時代!一個是西方魔幻的經典之作,一個是東方仙俠的永恆回憶,暗黑宇宙與仙劍江湖時空交錯,兩大IP攜手斬妖除魔。 4月24日,關於正義與俠道的不滅傳說將在庇護之地上演!

Java開發表單欄位的連動與依賴功能 Java開發表單欄位的連動與依賴功能 Aug 07, 2023 am 08:41 AM

Java開發表單欄位的連結與依賴功能引言:在Web開發中,表單是經常使用到的互動方式,使用者可以透過表單填寫資訊並提交,而繁瑣、冗餘的表單欄位選擇作業往往會給用戶帶來不便。因此,表單欄位的連動和依賴功能被廣泛應用於提升使用者體驗和操作效率。本文將介紹如何使用Java開發實作表單欄位的連動和依賴功能,並提供對應的程式碼範例。一、表單欄位聯動功能的實作表單

元夢之星奧特曼正版連動:賽羅澤塔共鳴奧特之力,迸發熱血火花! 元夢之星奧特曼正版連動:賽羅澤塔共鳴奧特之力,迸發熱血火花! Feb 24, 2024 pm 02:25 PM

元夢之星奧特曼正版聯動系列,賽羅澤塔同款時裝細節今日大公開,相信大家已經期待很久了,與賽羅澤塔聯名時裝已於今日上線,一起跟隨小編來看看本次奧特曼聯動的更多細節,希望能帶給你幫助。元夢之星奧特曼正版連動:賽羅澤塔共鳴奧特之力,迸發熱血火花!賽羅作為光之國新一代的年輕奧特戰士終極賽羅警備隊的隊長賽羅奧特曼不羈又善良,熱情又奔放「有我在身邊,你還不放心嗎?賽羅會盡全力保護星寶星寶們快穿上賽羅奧特曼時裝,與賽羅一起奮勇戰鬥吧!細節展示建模動作展示出場動作待機動作澤塔我才不是三分之一的半吊子,我是宇宙

Excel輸入1下拉為什麼全是1? Excel序號下拉不遞增全是1解決方法 Excel輸入1下拉為什麼全是1? Excel序號下拉不遞增全是1解決方法 Mar 13, 2024 pm 09:01 PM

  Excel輸入1下拉為什麼全是1? Excel表格是我們日常辦公都會使用到的軟體,相信很多的用戶們在使用自動填充的時候第一個是1,往下拉也是1,那麼這是怎麼回事?下面就讓本站來為用戶們來仔細的介紹一下Excel序號下拉不遞增全是1解決方法吧。  Excel序號下拉不遞增全是1解決方法  1、我們在excel中輸入1下拉後,發現全部都是1,此時可以點選「自動填入選項圖示」。  2、因為自動填入的方式是複製儲存格,所以會出現下拉全是1的情況。  3、我們勾選「以序列方式填

See all articles