2013-02-25 86 views
1

我已經看到有些人在類似的問題之前問過,但沒有人回答我的問題。 我有一個關於Ajax和PHP的問題。在他們兩人中,我都是初學者。從mysql中填充第二個下拉菜單

我試圖做的是所謂的:鏈式選擇框。我想要2個下拉菜單。當我從第一個選擇一個值,然後第二個下拉菜單它從MySQL數據庫填充。

爲此,我使用jQuery,ajax,php和mysql。

我想在網上找到一些例子,但他們都對我來說似乎相當複雜(我猜因爲我是初學者)。

我決定製作一些屬於自己的東西,但我得到了堆疊。我不確定這個邏輯是否正確。

所以在這裏,我們去(我將在這裏包括僅相關代碼):

使用jQuery我發送一個Ajax請求:

$("#loc").change(function(){ 
    var val = ($('#loc').val()); 

     $.ajax({ 
     type:'POST', 
     url:'query.php', 
     data: {val:val}, 
     success:function(response){ 
      $("#x").html(response); 
     } }); 
    }); 

「祿」是第一個下拉菜單的ID。我得到的價值,我把它給query.php

query.php有以下幾行代碼:

<?php 

include('connect.php'); 
$area = $_POST['val']; 
$query ="SELECT DISTINCT activity FROM main ORDER BY 1 where n_city='$area'"; 
$result = mysqli_query($dbcon, $query) or die('no available data'); 
$options=""; 
while ($row=mysqli_fetch_array($result, MYSQLI_ASSOC)){ 
$activity=$row["activity"]; 

} 
?> 

現在我想弄清楚兩件事情。 1)我應該在成功函數中返回什麼,所以我得到一個填充查詢結果的表單? 2)第二,也是最重要的是,我的想法其實是否正確,或者我錯過了一些邏輯錯誤?

非常感謝。 迪米瑞斯

+0

回顯您需要的變量。就像我們在桌上一樣。但你需要使用選項標籤。 – Sarang 2013-02-25 13:03:08

+0

互聯網上有很多這方面的例子。雖然它們看起來很複雜,但它們會幫助你得到你想要的結果。 – mcryan 2013-02-25 13:03:25

+0

Sarang:你的意思是這樣的:echo $ options。=「'; – user1919 2013-02-25 13:05:40

回答

1
  1. 清潔的解決方案是返回包含用於第二下拉所有選項的JSON陣列。這可以通過創建一個正常的PHP數組然後使用json_encode()輕鬆完成。你可以遍歷結果並在你的JS函數中創建新的選項。

  2. 它肯定會這樣工作。但是,花時間學習如何使用其中一種可用的解決方案可能是值得的。

+0

謝謝。我會盡力去做你的建議。 – user1919 2013-02-25 13:08:07