如何将带有ajax的int发送到C#

时间:2013-12-25 20:20:43

标签: c# jquery asp.net-web-api

使用,这段代码我将变量发送到mvc,但是当我重新编译这段代码时,网页浏览器给我一个错误(404) - >没找到,我相信一切都很好,但有了这个,我不确定 - > data:JSON.stringify(idInfo)

Ajax的Jquery的

function first(idInfo)
{
$.ajax({
            url: "Information/getInformation",
            type: "POST",
            **data: JSON.stringify(idInfo),**
            dataType: "json",
            success: function (data) {
                ...
            }

        });

对于这段代码,我需要发送这个varieble。

C#

[HttpPost]
public information getInformation(int information)
{
...
}

感谢您的评论和建议。 我希望我能充分描述我的问题......

2 个答案:

答案 0 :(得分:0)

尝试添加网址斜杠的开头

url: "/Information/getInformation",

并像这样更改data

data: JSON.stringify( { information : idInfo }),

我认为您的InformationControllergetInformationAction,返回ActionResult

答案 1 :(得分:0)

首先,确保正确配置路由。考虑到您的API控制器如下所示:

public class InformationController : ApiController
{
  [HttpPost]
  public information getInformation(int information)
  {
    ...
  }
}

在这种情况下,您可以通过以下方式配置路由:

public void Configure(HttpConfiguration config) 
{
  config.Routes.MapHttpRoute(
    name: "PostInformationWithId",
    routeTemplate: "Information/getInformation",
    defaults: new { controller = "Information", action = "getInformation" }
  );
}

否则(如果您使用的是默认路由),您的请求网址可能需要api/前缀。

此外,您是通过请求正文idInfo请求发送POST,因此您需要将information参数标记为FromBody或通过值传递查询字符串:

使用FromBody属性:

public information getInformation([FromBody]int information)
{
  ..
}

通过query-string传递参数:

$.ajax({
  url: "Information/getInformation?information=" + 
    encodeURIComponent(idInfo),
  type: "POST",
  dataType: "json",
  success: function (data) {
    ...
  }
});

希望这有帮助。