How can i load data from ajax to Chosen jquery?

28,377

Solution 1

After checking out the Chosen docs, there seems to not be a "source" option. What you need to do is first run your Ajax call, then fill your select options. Once the select is all filled, then run Chosen on that select element.

I would use the following JS code:

var url = "../BUS/WebService.asmx/LIST_BU";
$.getJSON(url, function(json){
    var $select_elem = $("#cb_info");
    $select_elem.empty();
    $.each(json, function (idx, obj) {
        $select_elem.append('<option value="' + obj.BU_ID + '">' + obj.BU_NAME + '</option>');
    });
    $select_elem.chosen({ width: "95%" });
})

Solution 2

Ok, After some time with the help of suggestions from everybody, I have done

 function load_cb_info() {
            $.ajax({
                type: "POST",
                url: "../BUS/WebService.asmx/LIST_BU",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    $("#cb_info").html('');
                    $.each($.parseJSON(data.d), function (idx, obj) {
                    //$.each(data, function (idx, obj) {
                        $("#cb_info").append('<option value="' + obj.BU_ID + '">' + obj.BU_NAME + '</option>');
                    });
                    $("#cb_info").trigger("liszt:updated");
                    $("#cb_info").chosen({ width: "95%" });
                },
                error: function (data) {
                    console.log(data.d);
                }
            });
        }

And , I think this is an answer and everyone else can find it .Thank you.

Solution 3

I have changed your jsfiddle. Try this out http://jsfiddle.net/GaganJaura/by4d528c/2/

I have moved the chosen() to bottom.

$("#cb_info").empty();
$.each(data, function (idx, obj) {
    $("#cb_info").append('<option value="' + obj.BU_ID + '">' + obj.BU_NAME + '</option>');
}); 
  $("#cb_info").trigger("liszt:updated");

$("#cb_info").chosen();

Solution 4

You can try as follows it works for me

$.ajax({
        type: "POST",
        url: url,
        data: formData,
        processData: false,
        contentType: false,
        success:function(data){
            if($.trim(data) != "no"){
                $("#PROGRAM_ID").html(data);
                $("#PROGRAM_ID").trigger("chosen:updated");
            }               
        }
    });
Share:
28,377
Brian Crist
Author by

Brian Crist

Nothing is impossible.I like code

Updated on January 31, 2020

Comments

  • Brian Crist
    Brian Crist over 4 years

    I have use chosen at http://harvesthq.github.io/chosen/ . Ok, i testing it load data from ajax . I founding anywhere, maybe no someone success with them.

    <script src="theme/js/jQuery-2.1.3.min.js"></script>
        <link href="theme/chosen_v1.4.2/chosen.css" rel="stylesheet" />
        <script src="theme/chosen_v1.4.2/chosen.jquery.js"></script>
          <script type="text/javascript" charset="utf-8">
           $(document).ready(function () {
               $(".cb_bu_info").chosen({
                   width: "95%",
                   source: function (data) {
                       $.ajax({
                           type: "POST",
                           url: "../BUS/WebService.asmx/LIST_BU",
                           contentType: "application/json; charset=utf-8",
                           dataType: "json",
                           success: function (data) {
                               $("#cb_info").html('');
                               //$.each($.parseJSON(data.d), function (idx, obj) {
                               $.each(data, function (idx, obj) {
                                   $("#cb_info").append('<option value="' + obj.BU_ID + '">' + obj.BU_NAME + '</option>');
                               });  
                              //$("#cb_info").trigger("liszt:updated");
                           },
                           error: function (data) {
                               console.log(data.d);
                           }
                       });
                   }
               });
    
               $("#cb_info").trigger("liszt:updated");
            });
        </script>
    <select id="cb_info" class="cb_bu_info"></select>

    The data form ajax as

    [{"BU_ID":"B01","BU_NAME":"Agro Feed","BU_DES":"Agro Feed","EDIT_DATE":"2015-05-05T00:00:00","EDIT_BY":"","FLAG":false},{"BU_ID":"B02","BU_NAME":"Agro Farm","BU_DES":"Agro Farm","EDIT_DATE":"2015-05-05T00:00:00","EDIT_BY":"","FLAG":false}]
    

    Well , it's look ok , but when i run it , result not show in select option, see browser dev tool , I've not seen error. Anything is ok.What's the problem happen in here? Notes: only use Chosen Jquery