这是完成这项工作所需的更改:
$.ajax({ type: 'POST', url: '/Pages/PostBlogComment', data: { name: 'Test', url: 'Test', email: 'Test', body: 'Test', postid: 'Test' }, success: function (result) { alert(result.Value); }, error: function (msg) {//error pre goes here } });和你的控制器动作
public ActionResult PostBlogComment( string name, string url, string email, string body, string postid ) { return Json(new { Value = "This is a test" }); }可以通过引入视图模型进行改进:
public class PostViewModel { public string Name { get; set; } public string Url { get; set; } public string Email { get; set; } public string Body { get; set; } public string Postid { get; set; } }然后:
public ActionResult PostBlogComment(PostViewModel model) { return Json(new { Value = "This is a test" }); }注意事项:
data
jQuery AJAX调用的hash属性需要作为我的示例,否则您将发送JSON编码的字符串,而ASP.NET MVC的默认模型绑定器则不知道如何解析为操作参数。在ASP.NET MVC 3中,这已更改,因为有一个JsonValueProviderFactory允许您发送JSON请求。因此,如果您使用的是ASP.NET MVC 3,则可以这样发送AJAX请求,并且操作参数将正确绑定:
$.ajax({ type: 'POST', url: '/Pages/PostBlogComment', data: JSON.stringify({ name: 'Test', url: 'Test', email: 'Test', body: 'Test', postid: 'Test' }), contentType: 'application/json', success: function (result) { alert(result.Value); }, error: function (msg) {//error pre goes here } });ASP.NET MVC中的所有控制器操作都必须返回ActionResults。因此,如果您想要Json,则返回JsonResult。
该操作将匿名类型传递给Json方法,该方法包含
Value
在success
回调中使用的属性,服务器的响应如下所示:{ 'Value': 'This is a test' }部署此类文件时,请不要在您的javascript文件中使用此类硬编码网址,否则您的应用程序可能不会损坏。处理网址时,请始终使用Url帮助器:
... url: '<%= Url.Action("PostBlogComment", "Pages") %>', ...或者,如果这是一个外部javascript文件,则可以使用一些在视图中初始化的全局js变量来指向正确的网址,也可以将此网址作为DOM的一部分(例如,作为anchorhref属性或HTML5
data-*属性),然后使用jQuery获取值。



