javascript - 我有一个通过 ajax 调用返回选择选项的表单,但是当我保存后值不会显示

标签 javascript php jquery ajax

我有以下表格

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Populate City Dropdown Using jQuery Ajax</title>
<script type="text/javascript" src="http://code.jquery.com/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $("select.countr").change(function(){
        var selectedCountry = $(".countr option:selected").val();
        $.ajax({
            type: "POST",
            url: "countries.php",
            data: { country : selectedCountry } 
        }).done(function(data){
            $("#response").html(data);
        });
    });
});
</script>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
    <table>
        <tr>
            <td>
                <label>Country:</label>
                <select class="countr">
                    <option>Select</option>
                    <option value="usa">United States</option>
                    <option value="india">India</option>
                    <option value="uk">United Kingdom</option>
                </select>
            </td>
           <td id="response">
                <select class="response">
                    
                   
                </select>
            </td>
        </tr>
    </table>
    <input type="submit" name="submit">
</form>
</body> 
</html>

以及以下 php 代码

<?php
     if(isset($_POST["country"])){
    // Capture selected country
    $country = $_POST["country"];
    var_dump($country);

    // Define country and city array
    $countryArr = array(
                    "usa" => array("New York", "Los Angeles", "California"),
                    "india" => array("Mumbai", "New Delhi", "Bangalore"),
                    "uk" => array("London", "Manchester", "Liverpool")
                );

    // Display city dropdown based on country name
    if($country !== 'Select'){
        echo "<label>City:</label>";
        echo "<select>";
        foreach($countryArr[$country] as $value){
            echo "<option>". $value . "</option>";
        }
        echo "</select>";
    } 
}

if(isset($_POST['submit']))
{
    var_dump($_POST);
}
?>

ajax返回数据并填充select选项。

问题是当我提交表单时,发布数据是空的,当我检查选项的源代码时,即使创建了下拉列表,也不存在。

我做错了什么...

最佳答案

第一: select 标记缺少 name 属性

echo "<select name='what_ever_you_want'>";

注意:没有 name 属性 元素将被 form 忽略。它不会发送到服务器

第二个:缺少选项value属性

echo "<option value='". $value . "'>". $value . "</option>";

第三: !!重要!!将此 if 语句 if($country !== 'Select'){ } 更改为 if($country !=''){ }

if($country != ''){
        echo "<label>City:</label>";
        echo "<select name='city'>";
        foreach($countryArr[$country] as $value){
            echo "<option>". $value . "</option>";
        }
        echo "</select>";
    } 

测试1: done(function(data){ console.log(data); }); 放置此代码并确认ajax返回数据或不

关于javascript - 我有一个通过 ajax 调用返回选择选项的表单,但是当我保存后值不会显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45049676/

相关文章:

javascript - dojo/使用NodeJS请求一个png图像数组缓冲区,并将图像返回给客户端

javascript - 从 php 调用 javascript 函数时遇到问题

php - 在代理后面运行 PHP SoapServer

jquery - Kendo 更改网格中的字体颜色

javascript - 在不更改 View 的情况下单击键盘上页脚的输入级别! Cordova jQuery

javascript - CSV 上传并使用 JQUERY 将其解析为 HTML 表

javascript - 在 ASP.Net MVC 中,如何在单击时显示和隐藏 3 个 @Html.ActionLink 按钮?

javascript - 使用 Typescript 在 React JS 中禁用文本框

javascript - 段落的简单 jQuery 推子

php - 最大函数嵌套级别在 Drupal 中达到错误