2013-03-22 78 views
1

我有一個HTML表單,下拉的國家來自數據庫。如果用戶選擇任何國家,則城市放置黎明將根據選定的國家顯示。Html選擇與ajax/jQuery的問題

如果用戶錯誤地輸入了任何形式的字段(此表單中有其他字段),則國家/地區下拉菜單將會記住用戶最初選擇的是哪個國家,但會清除該城市,並將其重置爲--Select City--。我試圖選擇城市名稱,但我不能。任何想法 ?

Ajax代碼在這裏:

<script type="text/javascript" src="http://ajax.googleapis.com/ 
ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() 
{ 
$(".country").change(function() 
{ 
var id=$(this).val(); 
var dataString = 'id='+ id; 

$.ajax 
({ 
type: "POST", 
url: "ajax_city.php", 
data: dataString, 
cache: false, 
success: function(html) 
{ 
$(".city").html(html); 
} 
}); 

}); 
}); 
</script> 

這裏ajax_city.php

<?php 
require_once("toplevel/content/database/databd.php"); 
if($_POST['id']) 
{ 
$id=$_POST['id']; 
$sql=mysql_query("select Name from cities WHERE CountryCode ='$id'"); 

while($row=mysql_fetch_array($sql)) 
{ 
$id=$row['Code']; 
$data=$row['Name']; 

if($_POST['city'] == $data) 
{ 
    $sel = 'selected = "selected"'; 
} 
else 
{ 
    $sel = " "; 
} 

echo '<option value="'.$data.'" ' .$sel . ' >'.$data.'</option>'; 
} 
} 
?> 

HTML表單的位置:

<tr> 
    <td>PAYS <span style="color: #FF0000;">*</span></td> 
    <td> 
<select name="country" class="country"> 
<option value="">Select</option> 

<?php 
    $sql=mysql_query("select * from country"); 
    while($row=mysql_fetch_array($sql)) 
    { 
    $id=$row['Code']; 
    $data=$row['Name']; 

    $data = mb_convert_encoding($data, 'UTF-8'); 

if($id == $_POST['country']) 
    { 
     $sel = 'selected="selected"'; 
    } 
    else 
    { 
     $sel = ""; 
    } 

    echo '<option value="'.$id.'"' . $sel . '>'.$data.'</option>'; 
    } 
?> 
</select> 
</td> 
</tr> 

<tr> 
<td>City</td> 
    <td> 
    <select class="city" name="city"> 
<option selected="selected" value="">--Select City--</option> 
</select> 
    </td> 
</tr> 
+2

[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並且被正式棄用](http://j.mp/XqV7Lp)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。 – Kermit 2013-03-22 17:44:24

+0

@PolishPrince感謝您的建議。 – 2013-03-22 17:46:52

+0

縣名單正在填充或不? – Jai 2013-03-22 17:48:55

回答

0

不歸仁TE肯定,但問題是datastring嘗試改變這一點:

$(".country").change(function(){ 
    var id=$(this).val(); 
    var dataString = {'id': id}; 

    $.ajax({ 
     type: "POST", 
     url: "ajax_city.php", 
     data: dataString, 
     cache: false, 
     success: function(html){ 
      $(".city").html(html); 
     } 
    }); 
}); 
+0

是的我認爲問題是datastring,但它不工作 – 2013-03-22 17:58:05

0

您將需要重建的重裝HTML,但現在你的城市列表(這是未經測試,但根據您的代碼從國家下拉菜單):

<tr> 
    <td>City</td> 
    <td> 
     <select class="city" name="city"> 
      <option selected="selected" value="">--Select City--</option> 
      <?php 
       if (isset($_POST['city']) { 
        $sql=mysql_query("select * from city"); 
        while($row=mysql_fetch_array($sql)) 
        { 
         $id=$row['Code']; 
         $data=$row['Name']; 

         $data = mb_convert_encoding($data, 'UTF-8'); 

         if($id == $_POST['city']) { $sel = 'selected="selected"'; } 
         else { $sel = ""; } 

         echo '<option value="'.$id.'"' . $sel . '>'.$data.'</option>'; 
        } 
       } 
      ?> 
     </select> 
    </td> 
</tr> 

警告:這只是相同的示例代碼。這永遠不會投入生產,因爲它有可能極度不安全!正如@PolishPrince在上面指出的,您至少應該使用PDO或MySQLi。

+0

它現在不工作.. – 2013-03-23 08:08:15

+0

你是什麼意思?之前工作過嗎?如果是這樣,你做了什麼改變? 「不工作」是什麼意思?爲什麼接受這個答案,然後不接受? – Steve 2013-03-23 14:28:56