当使用JQuery网格ajax调用绑定网格数据时,参数传递为'null'
问题描述:
我有一个JQuery网格,我使用ajax调用绑定到控制器。 控制器方法在ajax调用期间被击中,但参数值作为控制器方法传递为null。当使用JQuery网格ajax调用绑定网格数据时,参数传递为'null'
的parametre值在AJAX性能'data:'
这里正确绑定是我的JavaScript代码:
function BindGridData()
{
var BUids=$("#ddlBU").val().join(",");
var Zoneids=$("#ddlZone").val().join(",");
var Regionsids=$("#ddlRegion").val().join(",");
var Territoryids=$("#ddlTerritory").val().join(",");
$("#tblJQGrid").jqGrid(
{url: "@Url.Action("GetGeographyBreakUpData", "GeoMap")",
datatype: "json",
data: "{BUIds :'" + BUids + "',ZoneIds:'"+Zoneids+"',RegionIds:'"+Regionsids+"',TerritoryIds:'"+Territoryids+"'}",
mtype: 'GET',
colNames: ['Id','GeoGraphy', 'Completed', 'InProgress'],
colModel: [
{ name: 'Id', index: 'Id', width: 20, stype: 'text',hidden:true },
{ name: 'Geography', index: 'Geography', width: 150 },
{ name: 'Completed', index: 'Completed', width: 150 },
{ name: 'InProgress', index: 'InProgress', width: 150 },
],rowNum: 10,
sortname: 'Id',
viewrecords: true,
sortorder: "desc",
caption: "Geographical Survey Status",
scrollOffset: 0});
var res=$('#ddlResponseType').val();
res=res.join(',');
if(res=='1')
{
$("#tblJQGrid").hideCol("Completed");
}
else if(res == '2')
{
$("#tblJQGrid").hideCol("InProgress");
}
else
{
$("#tblJQGrid").showCol("InProgress");
$("#tblJQGrid").showCol("Completed");
}
}
这里是我的控制器方法
public string GetGeographyBreakUpData(string BUIds, string ZoneIds, string RegionIds, string TerritoryIds, string MarketIds, string FOIds, string ResponseTypeIds, string FromDate, string ToDate, string GridBreakUpLevel)
{
}
有人能告诉我在哪里我代码有问题?
UPDATE 我曾尝试使用Params
数组发送的值, 即使再Params
数组传递作为null
这里是更新的代码
var BUids=$("#ddlBU").val();
var Zoneids=$("#ddlZone").val();
var Regionsids=$("#ddlRegion").val();
var Territoryids=$("#ddlTerritory").val();
Params = new Array();
Params.push(BUids);
Params.push(Zoneids);
Params.push(Regionsids);
Params.push(Territoryids);
Params = Params.join("|");
$("#tblJQGrid").jqGrid(
{url: "@Url.Action("GetGeographyBreakUpData", "GeoMap")",
datatype: "json",
data: { "Parameters": Params },
mtype: 'GET',
colNames: ['Id','GeoGraphy', 'Completed', 'InProgress'],
colModel: [
{ name: 'Id', index: 'Id', width: 20, stype: 'text',hidden:true },
{ name: 'Geography', index: 'Geography', width: 150 },
{ name: 'Completed', index: 'Completed', width: 150 },
{ name: 'InProgress', index: 'InProgress', width: 150 },
],rowNum: 10,
sortname: 'Id',
viewrecords: true,
sortorder: "desc",
caption: "Geographical Survey Status",
scrollOffset: 0});
控制器
public string GetGeographyBreakUpData(string Parameters)
{
}
即使这样也行不通。
答
据我所知,由于datatype: json
,data
属性无法形成查询字符串参数。不是因为这是不正确的,但它可能转换它为content-type "application/x-www-form-urlencoded"
我怀疑processData属性可能是失败的原因。我几乎没有尝试过支持这一点,如果他们发现其他问题,我可以让他们编辑这个答案。
至于如果我发现更多的东西,我会在this.Just更新我们设置在传统的方式
url: "@Url.Action("GetGeographyBreakUpData", "GeoMap")"+"?BUIds='"+ BUids + "'&ZoneIds='"+Zoneids+"'&RegionIds='"+Regionsids+"'&TerritoryIds='"+Territoryids+"'"
参数的问题想分享这个jQuery.param()太
林不知道'数据属性在这里由网格使用。你能够建立与搜索参数的网址,并尝试? – Searching
@Searching那么我如何传递没有数据属性的参数? –
啊哟试试这个快速和脏的检查,看看是否传递参数,'“@ Url.Action(”GetGeographyBreakUpData“,”GeoMap“)”+“?BUIds ='”+ BUids +“'”'。你能够分享'ActionResult GetGeographyBreakUpData(...)'?只是方法签名.. – Searching