[英]Asp.net ajax with mvc2
我正在调用如下的ajax方法
var srchText = "Chicago";
$.ajax({
url: "/Ajax/GetCities",
data: "{'srchText' : '" + srchText + "'}",
dataType: "json",
type: "POST",
async: false,
contentType: "application/json; charset=utf-8",
dataFilter: function (data) { return data; },
success: function (data) {
cityList = data.d;
}
});
网址指向一个MVC控制器,如下所示,
[HttpPost]
public ActionResult GetCities(string srchText)
{
List<City> result = new List<City>();
EventsBIZ objBIZ = new EventsBIZ();
result = objBIZ.ToList<City>(objBIZ.GetCities(srchText));
return this.Json(new GetEventsResponse() { d = result }, JsonRequestBehavior.AllowGet);
}
该代码有问题,该方法已成功调用,但srchText为null。 请帮助我找出错误的wat。 提前致谢
添加从Firebug跟踪的请求。
您的代码不起作用的原因是,默认情况下,ASP.NET MVC 2无法理解 JSON
请求。 没有内置的组件可以让您发送JSON格式的请求,并且可以将该请求解析回强类型的操作参数。 从ASP.NET MVC 3开始,默认情况下内置此功能。请查看以下博客文章 。 如果要在ASP.NET MVC 2下进行此工作,则需要实现JsonValueProviderFactory
。
也可以代替:
data: "{'srchText' : '" + srchText + "'}",
您应该使用:
data: JSON.stringify({ srchText: srchText }),
JSON.stringify
是现代浏览器的本机,对于较旧的浏览器,您可能需要包括json2.js
。
如果您不想实现JsonValueProviderFactory
则另一种可能性是使用默认模型绑定程序可以理解的标准application/x-www-form-urlencoded
请求:
$.ajax({
url: '/Ajax/GetCities',
data: { srchText: srchText },
type: 'POST',
async: false,
dataType: 'json',
dataFilter: function (data) { return data; },
success: function (data) {
cityList = data.d;
}
});
您不必将srchText
作为json
发送,因为您只需发送一个字符串即可将其作为查询字符串发送
尝试这个
var srchText = "Chicago";
$.ajax({
url: "/Ajax/GetCities",
data: 'srchText=' + srchText ,
type: "POST",
async: false,
dataFilter: function (data) { return data; },
success: function (data) {
cityList = data.d;
}
});
我认为您没有传递有效的JSON,请尝试使用:
data: {"srchText" : srchText},
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.