首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在ASP.NET MVC中使用jQuery的Ajax调用不传递参数

在ASP.NET MVC中使用jQuery的Ajax调用不传递参数
EN

Stack Overflow用户
提问于 2010-05-07 09:37:58
回答 4查看 8.7K关注 0票数 3

路由是:

代码语言:javascript
代码运行次数:0
运行
复制
routes.MapRoute(
    "Ajax", // Route name
    "BizTalk/Services/{action}", // URL with parameters
    new
    { // Parameter defaults
     controller = "BizTalk"
    }
   );

我的控制器是:

代码语言:javascript
代码运行次数:0
运行
复制
public JsonResult AjaxTest(string s, int i, bool b)
  {
   return Json("S: " + s + "," + "I: " + i + "," + "B: " + b);
  }

我的jQuery代码:

代码语言:javascript
代码运行次数:0
运行
复制
$(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) {
     }
    });
   });
  });
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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就可以了……

票数 7
EN

Stack Overflow用户

发布于 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

票数 2
EN

Stack Overflow用户

发布于 2010-05-07 09:54:35

你是怎么得到"jquery ...不传递参数“的?你有没有尝试过用firebug来嗅探请求?

您在POST主体中发送数据,但试图以常规方式(使用操作参数)访问它们,如GET。

所有POST数据都在Request.Form中,或者您必须通过绑定到某个自定义ViewModel来处理它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2785648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档