不保存从ajax查询到会话的html选择数据

时间:2014-03-05 10:25:09

标签: php jquery mysql ajax select

我正在创建一个表单,用户必须从选择字段中选择其国家/地区和城市,该字段会根据所选的实际国家/地区进行动态更新。但是,当提交表单时,除了城市之外,所有内容都会成功保存。

我正在使用jquery select2和jquery验证插件,我认为这些可能会导致问题。

这是主要代码:

$('#country').select2().change(function() {
                $("#city").select2('data', null);
                $.ajax({
                    type: 'post',
                    url: 'search_city.php',
                    data: 'country=' + $(this).val(),
                    dataType: 'html',
                    success: function(response) {
                        $('#city').html(response);
                    }
                });
            });

<label>* City:</label>
    <select id="city" name="property_city" required>
        <option></option>
    </select>

这是search_city.php

echo '<option></option>';
while($city = mysqli_fetch_object($cities)) {
    if($_SESSION['property_city'] == $city->id) {
        echo '<option selected value="'.$city->id.'">'.$city->name.'</option>';                                                                 
    } else {
        echo '<option value="'.$city->id.'">'.$city->name.'</option>';
    }
}

当提交表单时,运行验证php,我将数据保存到会话变量。有更多的投入,不仅仅是国家和城市,除了我提到的城市外,它们都得到了成功的保存。

我无法弄清问题是什么。我没有包含所有代码,也许还有别的东西可能导致问题,但如果有人能在这里找到它我会放心。

1 个答案:

答案 0 :(得分:0)

你需要写,

$html =  '<option value=""></option>';
while($city = mysqli_fetch_object($cities)) {
    if($_SESSION['property_city'] == $city->id) {
        $html .= '<option selected value="'.$city->id.'">'.$city->name.'</option>';                                                                 
    } else {
        $html .= '<option value="'.$city->id.'">'.$city->name.'</option>';
    }
}
echo $html;