路由是:
routes.MapRoute(
"Ajax", // Route name
"BizTalk/Services/{action}", // URL with parameters
new
{ // Parameter defaults
controller = "BizTalk"
}
);
我的控制器是:
public JsonResult AjaxTest(string s, int i, bool b)
{
return Json("S: " + s + "," + "I: " + i + "," + "B: " + b);
}
我的jQuery代码:
$(document).ready(function() {
$("#btn_test").click(function() {
var s = "test";
var i = 8;
var b = true;
$.ajax({
type: "POST", cache: false,
url: "/BizTalk/Services/AjaxTest",
data: { i: i, s: s, b: b },
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
}
});
});
});
发布于 2010-05-07 11:51:34
这个post解释了问题和可能的解决方案(类似于@Erv的解释)。
如果您从对jQuery.ajax
的调用中删除了contentType: "application/json; charset=utf-8"
,那么将使用默认的内容类型(form-jQuery.ajax
编码),并且您指定为数据参数(data: { i: i, s: s, b: b }
)的json数据将被正确地映射到您的操作parameters....so,除非您真的想发送json数据,只需删除contentType就可以了……
发布于 2010-05-07 10:00:45
JSON不会自动将传入的ASP.NET数据映射到操作方法参数中。
有关添加该功能的解决方案,请参阅以下文章:
http://haacked.com/archive/2010/04/15/sending-json-to-an-asp-net-mvc-action-method-argument.aspx
此外,我认为您的jQuery调用实际上并不发送JSON,尽管这似乎是您希望它做的事情。jQuery不会自动将data
对象转换为JSON。您需要自己使用类似于json2.js的东西将其转换为JSON
发布于 2010-05-07 09:54:35
你是怎么得到"jquery ...不传递参数“的?你有没有尝试过用firebug来嗅探请求?
您在POST主体中发送数据,但试图以常规方式(使用操作参数)访问它们,如GET。
所有POST数据都在Request.Form
中,或者您必须通过绑定到某个自定义ViewModel
来处理它。
https://stackoverflow.com/questions/2785648
复制相似问题