参数不起作用的AJAX调用

时间:2015-06-08 13:25:46

标签: javascript jquery asp.net

我在制作带控制器参数的ajax帖子时遇到了麻烦。虽然这有效:

$.post("../api/vorgang/blubb"); 
[HttpPost]
[Route(@"blubb")]
public void blubb()
{
    // do amazing things here
}

当我为参数扩展它时,方法没有被击中:

$.post("../api/vorgang/blubb", { param1: "param1", param2: "param2"} );
[HttpPost]
[Route(@"blubb")]
public void blubb(string param1, string param2)
{
    // method is not hit, why oh why
}
// the request text
param1=param1&param2=param2

我看到它会导致

  

404:"找不到符合URI http://localhost:49412/api/vorgang/blubb.

的HTTP资源

我尝试将ajax调用更改为

$.post("../api/vorgang/blubb", JSON.stringify({ 
    param1: "param1", 
    param2: "param2"
}));

这会将请求文本更改为

{"param1":"param1","param2":"param2"}

但是控制器仍然没有被击中。

我要感谢你的暗示!

1 个答案:

答案 0 :(得分:1)

您使用HttpPost传递参数的方式,我不确定它是否会起作用。正在通过这里提到的{{3}}方法。

或者,您可以尝试创建一个Model对象,让MVC完成繁重的任务。

public class TestController : ApiController
{
    [HttpPost]
    public void blubb(Parameters param1)
    {
        // method is not hit, why oh why
    }
}
public class Parameters
{
    public string param1 { get; set; }
    public string param2 { get; set; }
}

你的AJAX电话:

var _parameters = {
    param1: "param1",
    param2: "param2"
};
$.ajax({
    type: "POST",
    url: "/api/Test/blubb",
    cache: false,
    data: JSON.stringify(_parameters),
    contentType: "application/json; charset=utf-8",
    success: function (data) { console.log("Success"); }
});

最终结果:

enter image description here

不确定,它有多大帮助!