Asp.net mvc 2 在AJAX调用中发送参数
其他人以前也问过这个问题,但我无法使用他们的答案 我正在尝试通过执行以下操作发送一些数据:Asp.net mvc 2 在AJAX调用中发送参数,asp.net-mvc-2,jquery,Asp.net Mvc 2,Jquery,其他人以前也问过这个问题,但我无法使用他们的答案 我正在尝试通过执行以下操作发送一些数据: function addForumPost() { var title = jQuery('#forumTitle').val(); var message = htmlEncode(jQuery('#message').htmlarea("toHtmlString")); var tagNames = addTags();
function addForumPost() {
var title = jQuery('#forumTitle').val();
var message = htmlEncode(jQuery('#message').htmlarea("toHtmlString"));
var tagNames = addTags();
var dataPost = $.toJSON({ title: 'testingsadf', message: message, tagNames: tagNames });
jQuery.ajax({
type: "POST",
url: "/Create",
data: dataPost,
dataType: "json",
success: function (result) {
}
});
}
我已经检查并加倍检查输入是否包含数据,但我只从控制器中的message参数接收数据。其他两个值为空。正如您在上面的示例中所看到的,我甚至为title参数指定了一些静态文本,但我仍然只接收message参数的数据
控制器如下所示:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(string title, string message, List<string> tagNames)
{
....
}
[AcceptVerbs(HttpVerbs.Post)]
公共操作结果创建(字符串标题、字符串消息、列表标记名)
{
....
}
尝试从jQuery 1.4开始设置参数。这对我很有用:
var title = 'title';
var message = 'message';
var tagNames = ['tag1', 'tag2'];
jQuery.ajax({
type: 'POST',
url: '/Home/Create',
data: { title: title, message: message, tagNames: tagNames },
dataType: 'json',
traditional: true,
success: function (result) {
}
});
通过这一行动:
[HttpPost]
public ActionResult Create(
string title,
string message,
IEnumerable<string> tagNames
)
{
return Json(new
{
Title = title,
Message = message,
TagNames = tagNames
});
}
[HttpPost]
公共行动结果创建(
字符串标题,
字符串消息,
IEnumerable标记名
)
{
返回Json(新的
{
头衔,
消息=消息,
标记名=标记名
});
}
您的错误非常简单。如果您有一个返回JsonResult
的操作,那么这意味着不您还必须向该方法发送JSON编码的输入参数。只需删除$.toJSON()
的用法,并将该对象用作jQuery.ajax
的data
参数的值(例如,请参见Darin的答案)
如果调用ASMX Web服务而不是ASP.NET MVC操作,则必须使用contentType:“application/json;charset=utf-8”
并将所有Web方法参数的值转换为json,但要使用其他方式(请参阅)。但是ASP.NETMVC没有这样的要求。MVC转换您发送的关于Parse
方法(int.Parse
、DateTime.Parse
等)的输入参数,而不是从JSON反序列化。因此,如果您搜索代码示例,请准确查看后端使用了哪些技术:ASP.NET MVC、ASMX web serveces或WFC