使用Asp.Net Core,在提交ajax表单后,我将从控制器返回一个IActionResult,其中包含我的MVC模型对象(Comment)的Json结果:
[HttpPost]
public IActionResult AjCreate([FromForm] Comment comment)
{
// do whatever to save to the database
//....
// return a json object
return Json(comment);
//return Ok(comment);
}
提交表单和处理响应的脚本如下:
$(function () {
$('#submitButton').on('click', function (e) {
e.preventDefault();
var formData = $('#myForm').serialize();
console.log('before ajax: ', formData);
$.ajax({
type: 'POST',
url: 'AjCreate',
dataType: 'json',
contentType: 'application/x-www-form-urlencoded; charset=utf-8',
data: formData,
success: function (response) {
var comment = JSON.parse(response); //<<<Invalid character error here
console.log('Success: ' + comment.commentText);
},
error: function (xhr, ajaxOptions, thrownError) {
alert('error is:' + thrownError);
}
});
});
});
我希望使用JSON.parse能够访问返回对象的"属性",但JSON.pase行导致无效字符错误。响应主体标头显示json响应为{"id":2,"commentText":"comment 2 text","commentDate":"2111-01-01T00:00:00","userName":"Will","parentCommentId":1}
。如果我使用JSON.stringify
,我可以得到它,但我如何访问对象属性,例如comment.id
?
有人能建议我做错了什么吗?最后,我想根据返回的值向页面添加元素。
来自jQuery文档,在dataType
下
"json":将响应求值为json并返回一个JavaScript对象。
您已经有了一个对象,只需使用它:
success: function (response) {
console.log('Success: ' + response.commentText);
}, // ^^^^^^^^