如何将 id 值动态获取到 ajax 调用变量

How to get the id values dynamically to the ajax call variables

在下面的代码中,我将动态获取 id (id="drop")。

我需要这个 id 值到另一个自动搜索功能。

根据 id 必须从数据库中搜索类别..

     <div class="search_dropdown">
            <select name="category" id="drop">
                <option value="">categories</option>
                <?php
                $resource = Mage::getSingleton('core/resource');
                $writeConnection = $resource->getConnection('core_write');
                $sql = "SELECT title, category_id FROM directory_categories";
                $result = $writeConnection->fetchAll($sql);
                $i = 1;

                if (count($result) > 0) {
                    foreach ($result as $key => $row) {
                        $last = "";
                        if ($i % 4 == 0) {
                            $last = "last";
                        }
                        ?>

                        <option
                            value="<?php echo $row['category_id']; ?>"><?php echo $row['title'] ?></option>

                        <?php $i++;
                    }
                }
                ?>
            </select>
        </div>

我的脚本编码是

    <script type="text/javascript">
        $(document).ready(function () {
            $('#drop').click(function (e) {
                e.preventDefault();
                var array = [];
                $('select :selected').each(function (i, value) {
                    array[i] = $(this).val();
                });
                //here make your ajax call to a php file
                $.ajax({
                    type: "GET",
                    url: "<?php echo $this->getBaseUrl();?>listings/search/autosearch",
                    data: {selected_values: array, otherVal: 'something else'}
                });
            });

        });
    </script>

在我的函数编码中是....我没有得到任何输出..它显示结果为 Null

public function autosearchAction()
{
    $array = $_GET['selected_values'];
    vardump($array);die();
    foreach($array as $key => $value){
        //do something with the key/value.
    }
}

提前致谢

在您的脚本编码中,而不是

$('drop').click(function (e) {

使用

$('#drop').click(function (e) {

因为 drop 是 select 元素的 id,在 jQuery 中,如果我们将 id 用作 select 或者我们必须在它前面加上 #

并且您应该使用 ajax 的 success 方法来获得 ajax 响应,如下所示

$.ajax({
    type: "GET",
    url: "<?php echo $this->getBaseUrl();?>listings/search/autosearch",
    data: {selected_value: $('#drop').val(), otherVal: 'something else'}
            },
    success: function(res) {
        alert(res);
    }
});

$('drop').click(function(){ ... }) 在语法方面没有错误,但是它永远不会被执行,因为它假定有一个原生的 HTML 'drop' 控件,同样的方式有一个native 'body', 'table', 'div', or 'select', etc... 但是 DOM 中没有 'drop'.. 'drop' 是你分配给一个 'select'控制。

所以如果你想让你的代码工作,你必须告诉 jQuery 监听对 'select' 控件的点击,或者监听 ID 为 '#drop' 的控件并且您通过在 ID 之前添加 '#' 来明确这一点,表明它不是原生元素,而是元素的 ID。

$('#drop').click(function(){ ... })