php - 单击提交按钮或搜索按钮后,在 URL 中动态获取国家/地区 ID

标签 php mysql codeigniter

这是controller.php

 <?php
class Autocomplete extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->model('datacomplete');
    }
    public function index($id)
    {
        echo $id;
        $this->load->view('view_demo', $data);
    }
    public function GetCountryName()
    {
        $keyword = $this->input->post('keyword');
        $data    = $this->datacomplete->GetRow($keyword);
        echo json_encode($data);
    }
}
?>

这是一个模型

<?php
class Datacomplete extends CI_Model
{

    public function GetRow($keyword)
    {
        $this->db->order_by('id', 'DESC');
        $this->db->like("name", $keyword);

        return $this->db->get('autocomplete')->result_array();
    }

}

这是view.php

<!DOCTYPE html>
<html>

<head>
    <!-- Latest compiled and minified CSS -->
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet">
    <!-- Latest compiled and minified JavaScript -->
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
    </script>
    <!-- Latest compiled and minified JavaScript -->
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js">
    </script>
    <script src="<?php echo base_url(); ?>assets/custom.js">
    </script>
    </link>
</head>

<body style="background-color: #000000;">
    <?php echo $id= 1; ?>
    <form action="<?php echo base_url('autocomplete/index/' .$id); ?>" method="post">
        <div class="row">
            <center>
                <h2 style="color: #fff;">
                    AUTOCOMPLETE FORM FROM DATABASE USING CODEIGNITER AND AJAX
                </h2>
            </center>
            <div class="col-md-4 col-md-offset-4" style="margin-top: 200px;">
                <label class="control-lable" style="color: #fff;">
                    Country Name
                </label>
                <input autocomplete="off" class="form-control" id="country" name="country" placeholder="Type to get an Ajax call of Countries" style="height:70px" type="text">
                <ul aria-labelledby="dropdownMenu" class="dropdown-menu txtcountry" id="DropdownCountry" role="menu" style="margin-left:15px;margin-right:0px;">
                </ul>
                <input type="submit">
                </input>
                </input>
            </div>
        </div>
    </form>
</body>

</html>

这是custom.js 文件

$(document).ready(function() {
    $("#country").keyup(function() {
        $.ajax({
            type: "POST",
            url: "http://localhost/codeajax/autocomplete/GetCountryName",
            data: {
                keyword: $("#country").val()
            },
            dataType: "json",
            success: function(data) {
                if (data.length > 0) {
                    $('#DropdownCountry').empty();
                    $('#country').attr("data-toggle", "dropdown");
                    $('#DropdownCountry').dropdown('toggle');
                } else if (data.length == 0) {
                    $('#country').attr("data-toggle", "");
                }
                $.each(data, function(key, value) {
                    if (data.length >= 0)
                        $('#DropdownCountry').append('<li role="displayCountries" ><a role="menuitem dropdownCountryli" class="dropdownlivalue">' + value['name'] + '</a></li>');
                });
            }
        });
    });
    $('ul.txtcountry').on('click', 'li a', function() {
        $('#country').val($(this).text());
    });
});

我想在单击提交按钮后在 URL 中动态获取国家/地区的 ID。 现在我使用静态传递 id 作为 1。 该表有两列 id 和国家/地区名称。 当我单击提交按钮时,如何将 id 动态传递给 url。 我无法从数据库动态获取 id,即当我单击“提交”时,应重定向到具有国家/地区 id 的新页面或在新页面中回显 $id 以及应显示该国家/地区 id 的 URL

最佳答案

您可以使用 JavaScript 来实现它。

首先更改形式:

<form action="<?php echo base_url('autocomplete/index/' .$id); ?>" method="post">

致:

<form method="post" id="countryForm">

然后更改提交按钮:

<input type="submit">

致:

<input type="submit" id="submitForm" disabled>

然后应用以下 JavaScript 代码:

$(document).ready(function() {
    $("#country").keyup(function() {
        $.ajax({
            type: "POST",
            url: "http://localhost/codeajax/autocomplete/GetCountryName",
            data: {
                keyword: $("#country").val()
            },
            dataType: "json",
            success: function(data) {
                if (data.length > 0) {
                    $('#DropdownCountry').empty();
                    $('#country').attr("data-toggle", "dropdown");
                    $('#DropdownCountry').dropdown('toggle');
                } else if (data.length == 0) {
                    $('#country').attr("data-toggle", "");
                }
                // Assign each country id into each country list `data-` element
                $.each(data, function(key, value) {
                    if (data.length >= 0)
                        $('#DropdownCountry').append('<li role="displayCountries" ><a role="menuitem dropdownCountryli" data-countryid="' + value['id'] + '" class="dropdownlivalue">' + value['name'] + '</a></li>');
                });
            }
        });
    });
    $('ul.txtcountry').on('click', 'li a', function() {
        $('#country').val($(this).text());
        $('#countryForm').attr('action', '<?php echo base_url('autocomplete/index/'); ?>' + $(this).data('countryid'); // set new form action which contain country id
        $('#submitForm').removeAttr('disabled'); // enable the submit button after one country is selected
    });
});

关于php - 单击提交按钮或搜索按钮后,在 URL 中动态获取国家/地区 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55570642/

相关文章:

php - Symfony FOSUserBundle - 在布局模板中包含登录表单

php - 优化查询——急切加载占用太多内存

php - 使用多输入 Codeigniter 创建过滤器

php - PayPal 在交易成功后不返回任何变量

MYSQL 查询每周获取新客户

MySQL 偏移量异常

mysql - 如何简化以下 SQL 查询?

php - codeigniter 表单验证错误消息不显示

php - htaccess Codeigniter 中的重定向 301

javascript - 避免两个 php 请愿同时发生