user2688870
user2688870

Reputation: 31

Send extra parameters with ajax chosen

I'm currently using the chosen JQuery plugin : http://harvesthq.github.io/chosen/

with this complement (to add an Ajax request) : https://github.com/meltingice/ajax-chosen

I would like to know if anyone has ever been able to send extra parameters to the ajax function. For now it only sends the letters in the input, but I would like to send an extra id. Here's what i'm doing:

    $("#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;
    });

I'm using the CakePHP Framework, here's my ajax function:

    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'] gives me the letters in the input, and I would like $this->request->data to be an id.

Regards

Upvotes: 0

Views: 2252

Answers (2)

Carlos ABS
Carlos ABS

Reputation: 723

This is the actual answer, using the BeforeSend option:

$('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;
    });

Upvotes: 0

Ehsan Sajjad
Ehsan Sajjad

Reputation: 62488

you can pass it in url parameter like this:

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;
    });

or

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;
    });

you can pass here you Id from some variable

Upvotes: 2

Related Questions