gpt4 book ai didi

jquery - 带有 $.ajax 的 MVC 无参数操作方法不返回结果

转载 作者:行者123 更新时间:2023-11-28 03:19:06 24 4
gpt4 key购买 nike

我有 2 个下拉列表框,我正在将值加载到第一个下拉列表中,根据它的选择,我通过 ajax 通过相同的操作方法将值加载到第二个

下面是我的脚本

$(document).ready(function () {       
$("#ddlOrgs").change(function () {
var listSite = $("#_site");
var SelctedOrgCode = $("#ddlOrgs").val();
alert(SelctedOrgCode);
if (SelctedOrgCode != 0) {

var url = '@Url.Action("GetSites","FilterMenu")';
$.ajax({
url : url,
type: 'POST',
tempdata:{},
data: JSON.stringify(tempdata),
dataType: 'json',
contentType: "application/json; charset=utf-8",
})
.done(function (data) {
var sitesDropdown = $("#ddlSites");
var list = data;
$.each(list, function (index, item) {
sitesDropdown.append('<option value?+item.SiteCode+?="">' + item.SiteName + '</option>');
alert(item);
});

})
.fail(function(xhr){
alert('failed');
alert(xhr.responseText);
});
}
});
});

我的 Controller Action 方法

[HttpPost]
public IEnumerable<Client> LoadFiltersX(constants.ClientType clientType)
{
List<Client> Clients = new List<Client>();
Client thisClient = new Client();

_client.UserName = this.UserName;

ClientRepository ClientRepo = new ClientRepository(_client);

switch (clientType)
{
case constants.ClientType.ORG:
Clients = ClientRepo.GetClientInformation(constants.ClientType.ORG);
//HttpContext.Current.Session.Add(constants.SESSION_CLIENT,thisClient);
System.Web.HttpContext.Current.Session.Add(constants.SESSION_CLIENT, _client);
break;
case constants.ClientType.CLIENT:
Clients = ClientRepo.GetClientInformation(constants.ClientType.CLIENT);
System.Web.HttpContext.Current.Session.Add(constants.SESSION_CLIENT, thisClient);
System.Web.HttpContext.Current.Session.Add(constants.SESSION_CLIENT, _client);
break;
case constants.ClientType.SITE:
Clients = ClientRepo.GetClientInformation(constants.ClientType.SITE);
System.Web.HttpContext.Current.Session.Add(constants.SESSION_CLIENT, thisClient);
System.Web.HttpContext.Current.Session.Add(constants.SESSION_CLIENT, _client);
break;
case constants.ClientType.SYSTEM:
Clients = ClientRepo.GetClientInformation(constants.ClientType.SYSTEM);
System.Web.HttpContext.Current.Session.Add(constants.SESSION_CLIENT, thisClient);
System.Web.HttpContext.Current.Session.Add(constants.SESSION_CLIENT, _client);
break;
}
System.Web.HttpContext.Current.Session.Add(constants.SESSION_CLIENT, _client);

return Clients;
}








[HttpPost]
public JsonResult GetSites()
{
return Json( LoadFiltersX(constants.ClientType.SITE), JsonRequestBehavior.AllowGet);

}

在我的存储库中,我按如下方式返回了 List 集合

public List<Client> GetClientInformation(constants.ClientType clientType)
{
List<Client> Clients = new List<Client>();
Repository Repo = new Repository();

Paralist.Clear();
SqlParameter p = new SqlParameter("OrgCode", _client.OrgCode);

Paralist.Add(p);
p = new SqlParameter("SiteCode", _client.SiteCode);
Paralist.Add(p);

p = new SqlParameter("ClientCode", _client.ClientCode);
Paralist.Add(p);

p = new SqlParameter("UserName", _client.UserName);
Paralist.Add(p);

try
{
SqlCommand com = Repo.GetCommand("uspStructureBuilderFilterGET", Paralist);
Client AddingClient = null;
using (IDataReader ClientReader = com.ExecuteReader())
{
while (ClientReader.Read())
{
switch(clientType)
{
case constants.ClientType.ORG:
AddingClient = new Client(){ OrgCode=ClientReader["OrgID"].ToString(), OrgName = ClientReader["Description"].ToString() };
break;

case constants.ClientType.SITE:

AddingClient = new Client(){ OrgCode = _client.OrgCode, OrgName = _client.ClientName, SiteCode=ClientReader["SiteID"].ToString(), SiteName = ClientReader["Description"].ToString() };
break;

case constants.ClientType.CLIENT:
AddingClient = new Client(){ OrgCode = _client.OrgCode, OrgName = _client.ClientName, SiteCode= _client.SiteCode, SiteName = _client.SiteName, ClientCode=ClientReader["ClientID"].ToString(), ClientName = ClientReader["Description"].ToString() };
break;

case constants.ClientType.SYSTEM:
AddingClient = new Client(){OrgCode = _client.OrgCode, OrgName = _client.ClientName, SiteCode= _client.SiteCode, SiteName = _client.SiteName, ClientCode = _client.ClientCode, ClientName = _client.ClientName, SystemId=ClientReader["SystemID"].ToString(), SystemName = ClientReader["System"].ToString() };
break;
}
AddingClient.UserName = _client.UserName;
Clients.Add(AddingClient);
}
}
}
catch(Exception e)
{
ErrorLogger el = new ErrorLogger();
el.AddErrorToLogger("ClientRepository", "GetClientInformation", e.Message, HttpContext.Current.User.Identity.Name);
throw e;
}

return Clients;
}

查看部分(位于布局文件中)

@if (Session.Count > 0 && Session["UserName"].ToString().Length > 0)
{
Client Client = new StB.Models.Client();
ClientRepository cr = new ClientRepository(Client);
//FilterMenu fm = new FilterMenu(Client);
FilterMenuController fmc = new FilterMenuController(Client);

<div class="DrawEmptyRow"></div>


<div class="navbar">
@*<div class="navbar-collapse collapse">*@
<ul class="nav navbar-nav list-inline ListItemHeight">
<li>Org: @Html.DropDownList("ddlOrgs", new SelectList(fmc.GetAllOrganizations.ToList(), "OrgCode", "OrgName", String.Empty), "-- Select Organisation --")</li>
<li id="_site">Site: <select id="ddlSites" name="ddlSites">
<option value="">Select Site </option>
</select></li>

<li>Exclude Decom: @Html.CheckBox("exDcom")</li>
<li>Exclude No Equip: @Html.CheckBox("ExNoEQuip")</li>
</ul>
</div>
}

当我调用没有返回结果并且控制台显示错误“tempdata undefned”时。该方法不传递任何参数。每个下拉列表都有相同的客户列表,但第一个采用“ORG”枚举,第二个采用“SITE”枚举。所以我为每种方法传递了它。我想让 List 填充下拉列表。我通过 Controller 中的正常操作方法成功加载了第一个 dropdwon 列表。但问题出现在ajax 方法中。请帮助我,因为我被困在错误的地方。我应该将其更改为“GET”吗?然后 ajax 方法失败并显示带有 css 值的 html 页面。任何人都请帮助我,因为我正在努力得到这个。感谢您提前提供的任何帮助。

谢谢tpk

最佳答案

如果您没有任何值,请在您的 ajax 调用中删除“tempdata”变量。

        $.ajax({               
url : url,
type: 'POST',
data: {}, // Pass the paramaters for MVC action method here...
dataType: 'json',
contentType: "application/json; charset=utf-8",
})

url = '@Url.Action("GetSites","FilterMenu")'; : 注意:如果您将 javascript 移动到单独的 javascript 文件,这将不起作用。使用相对 URL“/Controller/ActionMethod”。

关于jquery - 带有 $.ajax 的 MVC 无参数操作方法不返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45292693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com