我有一个简单的控制器:
public class UserCredentials
{
public string Username {get;set;}
public string Password {get;set;}
}
public class AuthenticationController : Controller
{
public ActionResult Authenticate(UserCredentials credentials)
{
// Do stuff
}
}
还有一点简单的Jquery:
var credentials = {
Username: "test",
Password: "test"
};
$("#send-request").button().click(function() {
var ajaxOptions = {
url: "http://localhost:29097/authentication/",
type: "POST",
dataType: 'json',
data: JSON.stringify(credentials),
contentType: "application/json; charset=utf-8",
success: function(result) { $("#result").html(result); }
};
$.ajax(ajaxOptions);
});
每当我点击页面上的按钮发送请求时,UserCredentials对象都包含两个属性的null ...我已经尝试通过fiddler直接发布JSON,也没有运气...我需要做什么什么特别的东西让这个工作?
- 编辑 -
我一直在仔细检查,似乎当数据离开客户端时,它在标头内正确地拥有了json数据。然而,当fiddler选择它时,它似乎不包含数据,看起来它正在进行OPTIONS调用:
OPTIONS http://localhost:29097/authentication/ HTTP/1.1
Host: localhost:29097
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Origin: null
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type,x-requested-with
如果它有助于我通过开发服务器运行MVC应用程序(想想它的名为Cassini)
答案 0 :(得分:1)
尝试在客户端传递此JSON。
var credentials = { "credentials": { "UserName": "test", "Password": "test" } };
像上面一样调用jquery ajax 完全。
在客户端构建JSON时,您必须考虑服务器端的参数,在这种情况下,此行凭据:< / p>
public ActionResult Authenticate(UserCredentials credentials)
{
// Do stuff
}
答案 1 :(得分:0)
当您发送POST请求时 - 它必须是键值集合。无法查看JSON.stringify(凭据)的功能,但使用http://www.ieinspector.com/httpanalyzer/可以更轻松地解决您的问题。此工具将显示您要发送的请求的所有详细信息。