iT邦幫忙

0

PHP無法取得下拉選單的值

  • 分享至 

  • xImage

各位IT前輩們好,最近自己做了一個簡易的公車時刻查詢,搜尋頁面有三個下拉選單,分別為: 車次、起點站、終點站,利用jquery實現下拉聯動選單,例:選擇某車次, 關於某車次的所有站名就會顯示出來,讓使用者去選擇"起點站"和"終點站",最後送出查詢。結果會顯示關於某車次,所有經過從起點站的開車時間,和終點站的抵達時間。

自己測試按下送出查詢後沒有任何值,也試著把起點站和終點站輸出,分別輸出echo $_POST['bus_stop'];和 echo $_POST['bus_stop1']; 結果沒有值。但是,在操作畫面下拉選單"選擇車次"後,公車站名起點站和終點站的下拉選單都有值顯示出站名(從HTML原始碼,當然是看不到的...)。

另外,為了確認sql查詢是否寫錯,自己在phpmyadmin去寫sql查詢,結果是正常的。

請教這部分可以用什麼方式去解決,或者PHP和jquery如何修改,才能解決目前的問題。麻煩IT前輩們解惑,感謝!

jquery內容:

$(function() {   
   $('#bus_class').change(function(){
		var Bus= $('#bus_class').val();
		$.ajax({
			type: "POST",
			url: 'bus.php',
			cache: false,
			data:'Bus='+Bus,
			error: function(){
				alert('Ajax request 發生錯誤');
			},
			success: function(data){
				$('#bus_stop').html(data);
				$('#bus_stop1').html(data);
			}
		});
    });
});

PHP內容:

<form method="post" action="{$_SERVER['PHP_SELF']}" >
    <legend>免費公車查詢</legend>
	<ul>
		<li>
			<label for="bus_class">公車車次</label>
			<select name="bus_class" id="bus_class">
				<option value="">車次</option>
				
				//公車車次從mysql取出所有車次,用while迴圈取值印出
			
			</select>			
		</li>
		<li>
			<label>公車站名</label>
			起點站
			<select name="bus_stop" id="bus_stop">
				<option value="">站名</option>                    
				
				//透過jquery連結bus.php, 從bus.php查詢sql再將公車站名顯示出來
			
			</select>
			終點站
			<select name="bus_stop1" id="bus_stop1">
				<option value="">站名</option>

				//透過jquery連結bus.php, 從bus.php查詢sql再將公車站名顯示出來
				
			</select>
		</li>
		<input type="hidden" name="op" value="search">
		<input type="submit" value="送出查詢">
	</ul>        
</form>
fillano iT邦超人 1 級 ‧ 2013-12-10 23:55:18 檢舉
瀏覽器的開發者工具,裡面都有「網路」的功能,記錄完整的request/reponse過程,包含ajax,建議你可以用這個工具來看看問題發生在哪個環節。

另外,有一些php工具可以讓你直接在瀏覽器開發工具裡面看到php的log訊息,例如chromephp、firephp等,可以加快找問題的速度,也不妨使用看看。
Beginner iT邦新手 3 級 ‧ 2013-12-11 10:55:47 檢舉
找問題這方面,自己還是新手。關於你提到的工具,這部分會去學習使用,感謝你的回。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

6
weiclin
iT邦高手 4 級 ‧ 2013-12-10 15:12:40
最佳解答

我拿你貼的這些去執行是正常的喔
所以假如你真的沒有拿到值, 檢查看看你的 bus.php 輸出的 html
看看 option 裡面有沒有給 value
目前只能猜測是這個問題了

Beginner iT邦新手 3 級 ‧ 2013-12-11 11:06:01 檢舉

看到你的回覆,立刻看bus.php的select option value,自己給了另外一個欄位的值,所以找不到啊...毆飛

感謝,問題已解決

PS: 關於找程式問題,fillano已提供這方面訊息,往後學習使用工具去找(準備迎接下一個問題...)

4
炎之虛空
iT邦高手 3 級 ‧ 2013-12-10 22:30:03

你的DATA應該是寫成

<pre class="c" name="code">
data: { Bus : Bus },

你的輸出型態也沒寫上
dataType: "html"
不過你的輸出是兩個下拉式選單的話
其實寫法有誤
剩下交給高手處理吧

Beginner iT邦新手 3 級 ‧ 2013-12-11 11:17:24 檢舉

jquery的部分,輸出兩個下拉選單的原因:使用者選擇了某公車車次,因為同車次,起點站和終點站的所有站名都會是相同,所以就這樣做。

關於你提到寫法有誤(是指有Bug或安全問題),這部分希望自己可以再去修改,所以可否麻煩你再給提示?感謝

我要發表回答

立即登入回答