2013-03-22 110 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