【问题标题】:Send extra parameters with ajax chosen选择 ajax 发送额外参数
【发布时间】:2014-04-04 10:38:39
【问题描述】:

我目前正在使用所选的 JQuery 插件: http://harvesthq.github.io/chosen/

使用此补充(添加 Ajax 请求): https://github.com/meltingice/ajax-chosen

我想知道是否有人能够向 ajax 函数发送额外的参数。 现在它只发送输入中的字母,但我想发送一个额外的 id。 这就是我正在做的事情:

    $("#mySelect").ajaxChosen({
    minTermLength: 2,
    type: "GET",
    url: "/Orders/ajax_getBundleItems",
    dataType: "json",
    error: onItemChosenFail
    },
    function (data)
    {
        var terms = {};

        $.each(data, function (i, val) {
            terms[i] = val;
        });
        return terms;
    });

我正在使用 CakePHP 框架,这是我的 ajax 函数:

    public function ajax_getBundleItems($term = null) {
            $this->layout = false;
            echo "<pre>";
            var_dump($this->request->data);
            var_dump($this->params['url']['term']);
            echo "</pre>";
      }

$this->params['url']['term'] 给我输入中的字母,我想要 $this->request->data 成为一个身份。

问候

【问题讨论】:

    标签: javascript php jquery ajax cakephp


    【解决方案1】:

    你可以像这样在 url 参数中传递它:

    var id = 123;
    
        $("#mySelect").ajaxChosen({
        minTermLength: 2,
        type: "GET",
        url: "/Orders/ajax_getBundleItems?Id="+id,
        dataType: "json",
        error: onItemChosenFail
        },
        function (data)
        {
            var terms = {};
    
            $.each(data, function (i, val) {
                terms[i] = val;
            });
            return terms;
        });
    

    var MyId = 23;
    
    $("#mySelect").ajaxChosen({
        minTermLength: 2,
        type: "GET",
        url: "/Orders/ajax_getBundleItems",
        dataType: "json",
        data: { id:MyId },
        error: onItemChosenFail
        },
        function (data)
        {
            var terms = {};
    
            $.each(data, function (i, val) {
                terms[i] = val;
            });
            return terms;
        });
    

    你可以从一些变量中传递你的 ID

    【讨论】:

    • 只有在 id 不变的情况下才有效。每次用户按一些字母时,我想发送一个特定的 ID。
    • 这里也可以传递变量
    • 有什么方法可以随时更改数据吗?假设我有一个复选框,当有人点击它时,它会触发可以修改所选数据集的点击事件。有可能吗?
    • 是的,我认为你已经重新初始化选择了一个函数并在那里调用它
    • 我投了赞成票,但这个解决方案对我不起作用。即使变量值已更改,该函数也始终使用曾经设置的第一个参数调用。即使我重新初始化函数,重新分配它,它也会保持初始值。
    【解决方案2】:

    这是使用 BeforeSend 选项的实际答案:

    $('select[name=element_id]', '#f-load-tc').ajaxChosen({
            type: 'GET',
            url: 'dynamic_url',
            dataType: 'json',
            afterTypeDelay: 300,
            allow_single_deselect: true,
            no_results_text: "No results matched",
            beforeSend: function(xhr, opts) {
                opts.url += '&category_id='+$category.val();
            },
        },
        function (data) {
            console.log(data);
            var terms = {};
            $.each(data, function (i, val) {
                terms[i] = val;
            });
    
            return terms;
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-21
      • 1970-01-01
      • 2015-04-12
      • 1970-01-01
      • 1970-01-01
      • 2014-07-10
      • 1970-01-01
      • 2012-02-26
      相关资源
      最近更新 更多