使用json.parse的字符无效

时间:2017-02-13 23:00:31

标签: javascript json json.net

使用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

有人可以建议我做错了什么或解决这个问题吗?最终,我想根据返回的值向页面添加元素。

1 个答案:

答案 0 :(得分:3)

来自jQuery documentation,位于dataType

  

&#34; json&#34;:将响应计算为JSON并返回一个JavaScript对象。

你已经有了一个对象,只需使用它:

success: function (response) {
  console.log('Success: ' + response.commentText);
},                      //  ^^^^^^^^