Веб-метод asp dot net Web не вызывается из select2 ajax - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь получить удаленные данные из select2 js, используя webmethod в коде c #, но безуспешно. Я хочу получить контроль над моим webmethod, чего сейчас не происходит.

$(document).ready(function() {

    if (jQuery.fn.select2) {
        $('#ctl00_Accounts').select2({
            ajax: {
                type: "POST",
                url: '/Pages/Common/Home.aspx/GetSearch',
                datatype: "json",
                data: function(params) {
                    debugger;
                    return JSON.stringify({
                        prefixText: params.term // search term
                    });
                },
                processResults: function(data) {
                    return {
                        results: data.items
                    };
                },
            },
            minimumInputLength: 3
        });
    }
});
[System.Web.Services.WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static List<CustomerInfo> GetSearch(string prefixText)
{
    int countCustomers = 50

    List<CustomerInfo> dataOutput = Fleetcor.GFN.Reflex.UI.Security.ReflexMembership.AvailableCustomers((int)Fleetcor.GFN.Reflex.UI.Security.ReflexMembership.CurrentUser.Account.UserID, false);

    List<CustomerInfo> output = dataOutput.FindAll(item => item.CustomerName.Contains(prefixText));
    if (output.Count > countCustomers)
    {
        output = output.GetRange(0, countCustomers);
    }
    return output;
}

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

Ваш класс CustomerInfo должен содержать два указанных ниже свойства, поскольку плагин select2 jquery будет принимать только эти имена свойств и сопоставлять результаты с классом CustomerInfo и возвращать в формате json.

public class CustomerInfo 
{
    public string id { get; set; }
    public string text { get; set; }
    //others prop
}

Источник https://select2.org/data-sources/formats

0 голосов
/ 17 мая 2019

Проверьте URL и атрибуты данных внутри ajax, попробуйте это, может быть, это поможет.

function Something() {  
    var userid = $("#reguser").val();  
    jQuery.ajax({  
        type: "POST",  
        url: "YourPage.aspx/yourMethodName",  
        contentType: "application/json; charset=utf-8",  
        data: "{'userID':'" + userid + "'}",  
        
        success: function (msg) {  
            alert("success");
                }  
                else {  
                }  
            });  
        },  
        error: function (d) {  
        }  
    });  
}  
...