我有一个像这样的控制器动作(非常简化):
[HttpPost]
public JsonResult Submit()
{
Response.StatusCode = Convert.ToInt32(HttpStatusCode.BadRequest);
return new JsonResult
{
ContentEncoding = Encoding.Default,
ContentType = "application/json",
Data = new {error = "xxxxxxxxxx"}
};
}
关键是我想要返回json,但浏览器中的结果是字符串。 这是返回对象的属性:
现在要使用它,我必须做JSON.Parse
之类的事情,我真的不想这样做。控制器动作应该只返回json。
我之前在JavaScript中的ajax请求中看到了结果对象的responseJSON
属性。
编辑: 我正在使用jQuery表单插件,所以从技术上讲,是谁发出请求。 这是我初始化jQuery Form Plugin的代码:
function initializeAjaxForm() {
var feedback = document.getElementById('feedback');
$('#upload-form').ajaxForm({
url: '/xxxx/Submit',
type: 'POST',
beforeSubmit: handleBeforeSubmit,
beforeSerialize: handlePreSerialize,
success: function (data) {
stopLoadingGif();
feedback.innerHTML = 'Yay!';
console.log(data);
},
error: function (data) {
debugger;
console.log(data);
stopLoadingGif();
feedback.innerHTML = 'Nay!';
}
});
}
以下是浏览器中的请求:
编辑2: 这是响应标题:
EDIT3:
这似乎只是错误处理程序中的一个问题。
答案 0 :(得分:1)
返回JSON
对象而非JSONResult
,如下所示:
return Json(new { error = "xxxxxxxxxx"},JsonRequestBehavior.AllowGet);