使用 ASP.NET C# 中的 jQuery 将多个参数传递给 Web 方法
Passing Multiple parameters to Web Method using jQuery in ASP.NET C#
我使用 WebMethod(服务)绑定了下拉列表
我有多个下拉列表,需要像下拉列表的级联一样相互依赖地绑定,但是在为一个选定的淡水河谷传递值时,它在我的 web 方法上调试时显示 null
网络方法:
public static List<Company> GetCompanies(string CountryCode, string CompanyCode)
{
GetInitiatorList.MasterDataServiceClient oClient = new GetInitiatorList.MasterDataServiceClient();
Almarai.GiveAway.GetInitiatorList.ALM_COMPANY_M[] initiatorsList = oClient.GetActiveCompanies(CountryCode, CompanyCode) List<Company> Companyes = new List<Company>();
foreach (Almarai.GiveAway.GetInitiatorList.ALM_COMPANY_M company in initiatorsList)
{
Companyes.Add(new Company()
{
CountryCode = company.CompanyCode,
CompanyName = company.CompanyName
});
}
return Companyes;
}
JQuery
$('#ddlCountry').change(function (e) {
var selectedCountry = $('#ddlCountry').val();
$.ajax({
type: "POST",
url: "Header.aspx/GetCompanies",
data: JSON.stringify({ CountryCode: selectedCountry, CompanyCode: 'SAU' }),
dataType: "json",
contentType: "application/json",
success: function (res) {
$.each(res.d, function (data, value) {
$("#ddlCompany").append($("<option></option>").val(value.CompanyId).html(value.CompanyName));
$('#ddlCompany').change(function (e) {
Aspx:
<div class="col-md-8">
<select id="ddlCountry">
<option value="0">--Select Country--</option>
</select>
</div>
我哪里做错了请指导我
我认为你不需要将其字符串化。
而不是:
data: JSON.stringify({ CountryCode: selectedCountry, CompanyCode: 'SAU' }),
尝试:
data: { CountryCode: selectedCountry, CompanyCode: 'SAU' },
要从下拉列表中获取当前选择的值:
$('#ddlCountry').val();
要从下拉列表中获取当前选定的文本:
$('#ddlCountry :selected').text();
您可以首先检查您的 ajax 调用是否正常工作,方法是在 ajax 调用中指定如下发送硬编码文本:
$.ajax({
type: "POST",
url: "Header.aspx/GetCompanies",
data: JSON.stringify({ CountryCode: 'USA', CompanyCode: 'SAU' })
....
然后您可以检查您是否正确分配了下拉值?如果你只想要文本而不是价值,那么你可以使用我在上面提到的。我认为它会解决你的问题。如果不是,请告诉我。
============更新(阅读评论后)======================
我已经根据您的示例创建了示例演示。因为我没有你的服务代码,所以很容易给它一个测试来检查它是否工作,否则它会给我和你一样的错误。
我为测试所做的工作对您来说可能看起来微不足道,但请检查,它对我有用并给我正确的结果。这是 Route Config 文件的屏幕截图,看看红色圆圈(我必须更改它才能使用 web 方法)
chrome 开发工具的屏幕截图(为简单起见,此处为 Contact.aspx 页面)
最后 Contact.aspx -> GetCompanies web 方法断点点击屏幕截图,这里为了简单起见我修改了方法体,只是为了检查数据绑定是否有效。
所以,它对我有用。请您逐一检查所有步骤并告诉我。如果对您有所帮助,那将是我的荣幸。
需要.aspx后缀吗?
Try like this url: "Header/GetCompanies",
非常愚蠢的一点,我在这里错过了我正在返回的网络方法CompanyCode
,如您所见
国家代码 = company.CompanyCode,
公司名称 = company.CompanyName
并且在 Html 中,我试图绑定 CompanyId
,正如您在此处看到的那样:
$("#ddlCompany").append($("<option></option>").val(value.CompanyId).html(value.CompanyName));
所以对于明显的区域,它变为空或 0。
我只需将 value.CompanyId
替换为 CompanyCode
,它现在运行良好
我使用 WebMethod(服务)绑定了下拉列表 我有多个下拉列表,需要像下拉列表的级联一样相互依赖地绑定,但是在为一个选定的淡水河谷传递值时,它在我的 web 方法上调试时显示 null
网络方法:
public static List<Company> GetCompanies(string CountryCode, string CompanyCode)
{
GetInitiatorList.MasterDataServiceClient oClient = new GetInitiatorList.MasterDataServiceClient();
Almarai.GiveAway.GetInitiatorList.ALM_COMPANY_M[] initiatorsList = oClient.GetActiveCompanies(CountryCode, CompanyCode) List<Company> Companyes = new List<Company>();
foreach (Almarai.GiveAway.GetInitiatorList.ALM_COMPANY_M company in initiatorsList)
{
Companyes.Add(new Company()
{
CountryCode = company.CompanyCode,
CompanyName = company.CompanyName
});
}
return Companyes;
}
JQuery
$('#ddlCountry').change(function (e) {
var selectedCountry = $('#ddlCountry').val();
$.ajax({
type: "POST",
url: "Header.aspx/GetCompanies",
data: JSON.stringify({ CountryCode: selectedCountry, CompanyCode: 'SAU' }),
dataType: "json",
contentType: "application/json",
success: function (res) {
$.each(res.d, function (data, value) {
$("#ddlCompany").append($("<option></option>").val(value.CompanyId).html(value.CompanyName));
$('#ddlCompany').change(function (e) {
Aspx:
<div class="col-md-8">
<select id="ddlCountry">
<option value="0">--Select Country--</option>
</select>
</div>
我认为你不需要将其字符串化。
而不是:
data: JSON.stringify({ CountryCode: selectedCountry, CompanyCode: 'SAU' }),
尝试:
data: { CountryCode: selectedCountry, CompanyCode: 'SAU' },
要从下拉列表中获取当前选择的值:
$('#ddlCountry').val();
要从下拉列表中获取当前选定的文本:
$('#ddlCountry :selected').text();
您可以首先检查您的 ajax 调用是否正常工作,方法是在 ajax 调用中指定如下发送硬编码文本:
$.ajax({
type: "POST",
url: "Header.aspx/GetCompanies",
data: JSON.stringify({ CountryCode: 'USA', CompanyCode: 'SAU' })
....
然后您可以检查您是否正确分配了下拉值?如果你只想要文本而不是价值,那么你可以使用我在上面提到的。我认为它会解决你的问题。如果不是,请告诉我。
============更新(阅读评论后)======================
我已经根据您的示例创建了示例演示。因为我没有你的服务代码,所以很容易给它一个测试来检查它是否工作,否则它会给我和你一样的错误。
我为测试所做的工作对您来说可能看起来微不足道,但请检查,它对我有用并给我正确的结果。这是 Route Config 文件的屏幕截图,看看红色圆圈(我必须更改它才能使用 web 方法)
chrome 开发工具的屏幕截图(为简单起见,此处为 Contact.aspx 页面)
最后 Contact.aspx -> GetCompanies web 方法断点点击屏幕截图,这里为了简单起见我修改了方法体,只是为了检查数据绑定是否有效。
所以,它对我有用。请您逐一检查所有步骤并告诉我。如果对您有所帮助,那将是我的荣幸。
需要.aspx后缀吗?
Try like this url: "Header/GetCompanies",
非常愚蠢的一点,我在这里错过了我正在返回的网络方法CompanyCode
,如您所见
国家代码 = company.CompanyCode, 公司名称 = company.CompanyName
并且在 Html 中,我试图绑定 CompanyId
,正如您在此处看到的那样:
$("#ddlCompany").append($("<option></option>").val(value.CompanyId).html(value.CompanyName));
所以对于明显的区域,它变为空或 0。
我只需将 value.CompanyId
替换为 CompanyCode
,它现在运行良好