我选择ASP.NET Web Application,然后选择Web API。我将身份验证保留在“个人用户帐户”并创建项目。
除了向api/Account/Register
添加ajax调用外,我没有做任何其他更改。
当我使用太简单的密码发出请求时,我会得到以下的json响应 - 这似乎很难处理。
是否有一些方法可以使用它,或者我是否真的需要访问textStatus.responseJSON.ModelState.\_empty\_[0]
以获得一个很好的文本响应?是否所有错误消息都遵循ASP.Net应用程序休息请求的这种一般响应格式?
PS:实际上我甚至不知道如何处理名为\_empty\_
的属性,因为textStatus.responseJSON.ModelState.\_empty\_[0]
甚至无效。
我的textStatus
对象:
{
"readyState": 4,
"responseText": "{\"Message\":\"The request is invalid.\",\"ModelState\":{\"\":[\"Passwords must have at least one non letter or digit character. Passwords must have at least one uppercase ('A'-'Z').\"]}}",
"responseJSON": {
"Message": "The request is invalid.",
"ModelState": {
"_empty_": [
"Passwords must have at least one non letter or digit character. Passwords must have at least one uppercase ('A'-'Z')."
]
}
},
"status": 400,
"statusText": "Bad Request"
}
更新:
这是回复的实际内容。
但我仍然不知道如何访问名称为“”的属性。并且,我想确保这是所有错误消息将返回给我的方式。
{
"Message": "The request is invalid.",
"ModelState": {
"": [
"Passwords must have at least one non letter or digit character. Passwords must have at least one uppercase ('A'-'Z')."
]
}
}
更新:
这似乎很好地解析了它。这和它一样好吗?
error: function (textStatus, errorThrown) {
var json = textStatus.responseJSON;
var message = json.Message;
if (json.ModelState) {
for (var i = 0; i < json.ModelState[''].length; i++) {
if (i == 0) message += "\n";
message += "\n" + json.ModelState[''][i];
}
}
alert(message);
}