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

时间:2015-02-05 04:34:26

标签: jquery ajax magento

在下面的编码中,我将动态获取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>

在我的功能编码中....我没有得到任何输出..它显示结果为空

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

提前致谢

2 个答案:

答案 0 :(得分:2)

在脚本编码中,而不是

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

使用

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

因为drop是select元素的id而在jQuery中如果我们使用id作为选择器,那么我们必须在#

之前

您应该使用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);
    }
});

答案 1 :(得分:0)

$('drop').click(function(){ ... })在语法方面没有错误,但它永远不会被执行,因为它假定存在本机HTML 'drop'控件,就像本机'body', 'table', 'div'一样,或'select'等...但DOM中没有'drop''drop'是您分配给'select'控件的ID。

因此,如果您希望代码能够正常工作,那么您必须告诉jQuery听取'select'控件上的点击,或者ID为'#drop'的控件,并通过在ID之前添加'#',表明它不是本机元素,而是元素的ID。

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