Jquery ajax选择下拉工作在FF和chrome但不是IE 7-9

时间:2012-09-25 00:07:34

标签: php jquery mysql ajax

我知道这已被问了很多次,现在你们都可能会厌倦它。我只是被困住了,已经花了大约4个小时。我已经阅读了很多关于

的建议
    cache:false, 

选项并添加某些“内容类型”,但是当我这样做时,它不再适用于任何浏览器。

我按照此处的教程进行了操作:http://www.x-developer.com/php-scripts/loading-drop-downs-with-ajax-php-and-fetching-values-from-database-without-refreshing-the-page

我根据自己的需要修改了它,主要是mysql和标识符。

这就是我头脑中的内容:

    <script type="text/javascript">
    function get_cities(country)
    {

    $.ajax({
    type: "POST",
    url: "/cities.php", 
    cache: false,
    beforeSend: function () {
    $("#state").html("<option>Loading ...</option>");
    },
    data: "country="+country,
    success: function(msg){
    $("#state").html(msg);

    }
    });
    } 
    </script>

在IE中,它进入Loading ....部分,并且什么都不做,它不会像在Chrome和FF中一样填充选项字段。

您是否在教程中看到他可能遗漏的任何内容对IE中的操作至关重要?

谢谢,

2 个答案:

答案 0 :(得分:1)

尝试将数据对象设置为键值对..

而不是

data: "country="+country,

尝试

data: { "country" : country },

答案 1 :(得分:0)

假设您的$("#state")已经是下拉列表。

cities.php

,您需要删除<select>代码。

<?php
// Code for cities.php
$country_id = $_REQUEST['country_id'];

$sql_city = "SELECT * FROM CITY WHERE country_id = '".$country_id."'";
$result_city = mysql_query($sql_city);

// REMOVE THIS LINE
//echo "<select name='city'>";

while($row_city = mysql_fetch_array($result_city))
{
echo "<option value='".$row_city['id']."'>".$row_city['city']."</option>";
}

// AND REMOVE THIS LINE  
// echo "</select>";

?>