简体   繁体   English

如何使用 Jquery Ajax 调用填充下拉列表?

[英]How to fill a DropDown using Jquery Ajax Call?

I have a WebMethod which gets data that I want to fill DropDown with in a DataSet.我有一个 WebMethod,它获取我想在 DataSet 中填充 DropDown 的数据。 Currently I am filling the dropdown using a hardcoded object.目前我正在使用硬编码对象填充下拉列表。 But I want to replace this hard coded object with data returned by webmethod.但我想用 webmethod 返回的数据替换这个硬编码对象。

 [System.Web.Services.WebMethod]
         public static string GetDropDownDataWM(string name)
         {
             //return "Hello " + name + Environment.NewLine + "The Current Time is: "
             //    + DateTime.Now.ToString();

             var msg = "arbaaz";

             string[] name1 = new string[1];
             string[] Value = new string[1];
             name1[0] = "@Empcode";
             Value[0] = HttpContext.Current.Session["LoginUser"].ToString().Trim();
             DataSet ds = new DataSet();
             dboperation dbo = new dboperation();
             ds = dbo.executeProcedure("GetDropDownsForVendor", name1, Value, 1);

             return ds.GetXml(); 

         }

CLIENT SIDE(UPDATE 1):客户端(更新 1):

  <script type = "text/javascript">
    function GetDropDownData() {
        var myDropDownList = $('.myDropDownLisTId');

        $.ajax({
            type: "POST",
            url: "test.aspx/GetDropDownDataWM",
            data: '{name: "abc" }',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                $.each(jQuery.parseJSON(data.d), function () {
                    myDropDownList.append($("<option></option>").val(this['FieldDescription']).html(this['FieldCode']));
                });
            },
            failure: function (response) {
                alert(response.d);
            }
        });
    }
    function OnSuccess(response) {
        console.log(response.d);
        alert(response.d);
    }
</script>
function GetDropDownData() {
    $.ajax({
        type: "POST",
        url: "test.aspx/GetDropDownDataWM",
        data: '{name: "abc" }',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(data.d)
                {
                    $.each(data.d, function (){
                        $(".myDropDownLisTId").append($("<option     />").val(this.KeyName).text(this.ValueName));
                    });
                },
        failure: function () {
            alert("Failed!");
        }
    });
}

From the WebMethod , don't send DataSet directly, send XML ... WebMethod ,不要直接发送DataSet ,发送XML ...

[System.Web.Services.WebMethod]
public static string GetDropDownDataWM(string name)
{
    DataSet ds = new DataSet();
    ds.Tables.Add("Table0");
    ds.Tables[0].Columns.Add("OptionValue");
    ds.Tables[0].Columns.Add("OptionText");
    ds.Tables[0].Rows.Add("0", "test 0");
    ds.Tables[0].Rows.Add("1", "test 1");
    ds.Tables[0].Rows.Add("2", "test 2");
    ds.Tables[0].Rows.Add("3", "test 3");
    ds.Tables[0].Rows.Add("4", "test 4");

    return ds.GetXml();
}

Before Ajax call... Ajax调用之前......

var myDropDownList = $('.myDropDownLisTId');

Try like below...(inside Ajax call) 尝试如下......(在Ajax调用中)

success: function (response) {
    debugger;

    $(response.d).find('Table0').each(function () {
           var OptionValue = $(this).find('OptionValue').text();
           var OptionText = $(this).find('OptionText').text();
           var option = $("<option>" + OptionText + "</option>");
           option.attr("value", OptionValue);

           myDropDownList.append(option);
     });
},

Note: 注意:

  1. OptionValue and OptionText are the Columns of DataSet Table. OptionValueOptionTextDataSet表的列。

  2. $(response.d).find('Table0').each(function (){}) - Here Table0 is the name of Table inside DataSet . $(response.d).find('Table0').each(function (){}) - 这里Table0DataSet中Table的名称。

 var theDropDown = document.getElementById("myDropDownLisTId");
                theDropDown.length = 0;
                $.each(items, function (key, value) {

                    $("#myDropDownLisTId").append($("<option></option>").val(value.PKId).html(value.SubDesc));

here "SubDesc",PKId describes the value getting out of Database., u need to separate your value from dataset. 这里的“SubDesc”,PKId描述了从数据库中获取的值。你需要将你的值与数据集分开。

[System.Web.Services.WebMethod]
     public static string GetDropDownDataWM(string name)
     {
         //return "Hello " + name + Environment.NewLine + "The Current Time is: "
         //    + DateTime.Now.ToString();

         var msg = "arbaaz";

         string[] name1 = new string[1];
         string[] Value = new string[1];
         name1[0] = "@Empcode";
         Value[0] = HttpContext.Current.Session["LoginUser"].ToString().Trim();
         DataSet ds = new DataSet();
         dboperation dbo = new dboperation();
         ds = dbo.executeProcedure("GetDropDownsForVendor", name1, Value, 1);

         return DataSetToJSON(ds); 

     }

public static string DataSetToJSON(DataSet ds)
{

    Dictionary<string, object> dict = new Dictionary<string, object>();
    foreach (DataTable dt in ds.Tables)
    {
        object[] arr = new object[dt.Rows.Count + 1];

        for (int i = 0; i <= dt.Rows.Count - 1; i++)
        {
            arr[i] = dt.Rows[i].ItemArray;
        }

        dict.Add(dt.TableName, arr);
    }

    var lstJson = Newtonsoft.Json.JsonConvert.SerializeObject(dict);
    return lstJson;
}

Ajax Call Ajax 调用

function GetAssociation() {

        var myDropDownList = $("#myDropDownLisTId");
        var post_data = JSON.stringify({ "name": "xyz"});
        $.ajax({
            type: "POST",
            url: "test.aspx/GetDropDownDataWM",
            data: post_data,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (response) {
                json_data = JSON.parse(response.d);
                myDropDownList.empty();
                for(i=0; i<json_data.Table.length; i++)
                {

                    myDropDownList.append($("<option></option>").val(json_data.Table[i][0]).html(json_data.Table[i][1]));
                }

            },
            failure: function (response) {
                alert(response.d);
            }
        });
    }
// We can bind dropdown list using this Jquery function in JS script
   

function listDropdownBind() {
  var requestId = 123; 
    $.ajax({
        type: "POST",
        url: "/api/ControllerName/ActionName?param=" + param, // call API with parameter
        headers: { 'rId': requestId },
        dataType: "json",
        contentType: "application/json; charset=utf-8",

        success: function (data) {
            var optionhtml1 = '';
            var optionhtml1 = '<option value="' +
                0 + '">' + "--Select--" + '</option>';
            $("#ddlName").append(optionhtml1);

            $.each(data, function (i) {

                var optionhtml = '<option value="' +
                    data.d[i].Value + '">' + data.d[i].Text + '</option>';
                $("#ddlName").append(optionhtml);
            });
        }
    });
};

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM