Ajax 板


LINE

各位大大你们好 想请教一下,关於二层式下拉式选单,第一层选定後 要如何 利用 AJAX 把值导出,存进本页的 PHP 变数里? 网路上相关的选单范例爬文好久,还是试不太出来 例如: 第一层选单 内容为 批号 A1、A2、A3、A4 我想要将 使用者所选的选项 储存至 本页 的 PHP 变数 $select1 然後透过 $select1 的值,要去 MySQL 里面捞资料,做为 第二层的选项 资料表如下: id | T_id A1 | T1 A1 | T2 A1 | T3 A2 | T1 A2 | T2 A3 | T1 A3 | T2 A3 | T3 A3 | T4 小弟在此先感谢各位大大的解答 麻烦各位了 !!!!!! --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.173.77.138
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Ajax/M.1433193715.A.DF1.html
1F:→ y2468101216: 我觉得你应该搞错了什麽 ajax取出的资讯是在js里面 06/02 09:23
2F:→ y2468101216: http://api.jquery.com/jquery.ajax/ 06/02 09:23
3F:推 Kenqr: 一开始就把所有第二层选单的资料都捞出来建好选单 06/02 11:58
4F:→ Kenqr: 否则使用者选好第一层还要等ajax把第二层传回来 实在太慢 06/02 11:59
5F:→ b8211290: y大 我知道值是在 js里,我想知道有没有办法让php读取 06/02 13:50
6F:→ b8211290: 到 06/02 13:50
7F:→ b8211290: k大,我一开始就全捞出来没有问题,不过第二层选单,我 06/02 13:51
8F:→ b8211290: 需要随着第一层选取的项目跟着变化 06/02 13:51
9F:→ b8211290: 例如 选 A1 要出现 T1 T2 T3,选A2 要出现 T1 T2 06/02 13:53
10F:→ KawasumiMai: 如果数量不是很多,从一开始用json回传整个架构是 06/02 13:57
11F:→ KawasumiMai: 可能的,也比较快。js执行後修改"本页"的php变数印象 06/02 13:58
12F:→ KawasumiMai: 中是可能的,但这写法不太好。如果你纯粹只是要利用 06/02 13:58
13F:→ KawasumiMai: ajax去要求下一层资料,应该是点选後直接呼叫ajax利 06/02 13:59
14F:→ KawasumiMai: 用传入值去跟後端要资料,不需要修改到本页php变数 06/02 13:59
15F:→ b8211290: 网路上很多范例我测试过,第一层资料能正常抓出来,不过 06/02 14:17
16F:→ b8211290: 第二层资料却出不来,我也不知道哪个环节错了,能求一下 06/02 14:17
17F:→ b8211290: 范例吗? 06/02 14:17
18F:→ KawasumiMai: 怎样的出不来?点选呼叫的时候要把选择结果传到呼叫 06/02 15:33
19F:→ KawasumiMai: ajax的function去再丢给後端。 06/02 15:34
20F:→ joedenkidd: 你先试看看,select取值要用id,当抓到资再用ajax後送 06/02 20:52
21F:→ joedenkidd: ,你先确定第一个select值有没有抓到 06/02 20:54
22F:→ b8211290: 刚下班回家,我再试试看,谢谢各位大大解答 06/02 23:33
目前我写这样: -------------------- test.php -------------------- <form method="POST" action="factor_design_save.php" enctype="application/x-www-form-urlencoded"> 实验批号:<br> <select name="eid" id="eid"> <option value="0">请选择</option> <?php // 取得第一层option资料 $link = mysql_connect("127.0.0.1", "root", "")or die("unable to connect mysql". mysql_error()); mysql_select_db("experiment"); mysql_query("SET NAMES uft8"); $query = "SELECT DISTINCT Exp_id FROM team"; $result = mysql_query($query, $link); while ( $row = mysql_fetch_assoc($result) ) { echo '<option value="'.$row["Exp_id"].'">'.$row["Exp_id"].'</option>'."\n"; } ?> </select><br> 组号:<br> <select name="tid" id="tid"> <option value="0">请选择批号</option> <script> $(document).ready(function(){ $('#eid').change(function(){ //更动第一层时第二层清空 $('#tid').empty().append("<option value='0'>请选择批号</option>"); $.ajax({ type: "GET", url: "action.php", data: {data:$('#eid option:selected').val()}, datatype: "json", success: function(result){ //当第一层回到预设值时,第二层回到预设位置 if(result == "0"){ $('#tid').val($('option:first').val());//pseudo selector } //依据第一层回传的值去改变第二层的内容 var i=0; while ( i < result.length ) { $("#tid").append("<option value='"+result[i]+"'>"+result[i]['T_id']+"</option>"); i++; } }, error: function(error){ alert( "error" ); } }); }); }); </script> </select><br> <input type="submit"> </form> -------------------- action.php -------------------- <?php //return json format header('Content-Type: application/json;charset=utf-8'); $link = mysql_connect("127.0.0.1", "root", "")or die("unable to connect mysql".mysql_error()); mysql_select_db("experiment"); mysql_query("SET NAMES uft8"); $Exp_id = $_GET['data'];//get ajax data 'Exp_id' $jarray = array();//使用array储存结果,再以json_encode一次回传 if ( $Exp_id != 0 ) { $query = "SELECT t_id FROM team Where exp_id=".$Exp_id; $result = mysql_query($query, $link); //fetch_assoc return [{},{}] //fetch_row return[[],[]] //fetch_object return[{},{}] //fetch_array return [{},{}] while ($row = mysql_fetch_assoc($result)) { $jarray{} = $row; //这边如果我用 [ ] 选单出不来,用 { } 内容不是我要的 (晕.. } } else { echo 0; return; } echo json_encode($jarray); return; ?> ※ 编辑: b8211290 (1.173.77.138), 06/03/2015 03:11:25 ※ 编辑: b8211290 (1.173.77.138), 06/03/2015 03:14:02
23F:→ b8211290: 麻烦各位大大帮忙看一下是哪里出问题了,谢谢 06/03 03:15
24F:→ KawasumiMai: $jarray{} = $row ? 这是while回圈,每读一行都取 06/03 13:48
25F:→ KawasumiMai: 一次覆盖? 应该要用array_push吧? 06/03 13:48
26F:→ hwChang: 先用 alert 或 console.log 看一下 select 的值 06/19 22:01
27F:→ hwChang: 同样的,在 success 看一下 result 得到什麽 06/19 22:02







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP