使用Asp.Net Core,在ajax表单提交后,我从Controller中返回一个IActionResult,其中包含我的MVC Model对象的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.parse行会导致无效的字符错误。响应正文标头显示json响应为{"id":2,"commentText":"comment 2 text","commentDate":"2111-01-01T00:00:00","userName":"Will","parentCommentId":1}
。如果我使用JSON.stringify
代替,我可以得到这个,但是如何访问对象属性,例如comment.id
?
有人可以建议我做错了什么或解决这个问题吗?最终,我想根据返回的值向页面添加元素。
答案 0 :(得分:3)
来自jQuery documentation,位于dataType
&#34; json&#34;:将响应计算为JSON并返回一个JavaScript对象。
你已经有了一个对象,只需使用它:
success: function (response) {
console.log('Success: ' + response.commentText);
}, // ^^^^^^^^