如何访问JSON.parse创建的此JSON对象的元素?

时间:2016-07-05 06:03:51

标签: javascript jquery json ajax

我正在使用AJAX POST从我的服务器的客户端发送JSON对象。但是,一旦它到达那里,我对如何访问它有点困惑。

这是我在客户端的POST:

var data = JSON.stringify({
       'app': 'reviews',
       'name': '',
       'review': '',
       'response': '',
       'rating': rating,
       'url': url,
       'date': date
     });
     console.log(data);
     $.ajax({
           type: "POST",
           url: "https://stormy-plateau-94715.herokuapp.com/",
           data: JSON.stringify(data),
           contentType: "application/json; charset=utf-8",
           dataType: "json",
           success: function(data) {
             alert(data['success']);
           },
           failure: function(errMsg) {
             alert(errMsg);
           }
       });

这很好用。在我的服务器上,我打印请求的正文,看起来很好:

"{\"app\":\"reviews\",\"name\":\"\",\"review\":\"\",\"response\":\"\",\"rating\":4.5,\"url\":\"test.com\",\"date\":\"7/5/2016\"}"

然后我在上面调用JSON.parse,一切都按预期工作,结果如下:

{ “应用程序”: “评论”, “姓名”: “”, “审查”: “”, “响应”: “”, “等级”:4.5, “URL”: “test.com”,”日期 “:” 2016" 年7月5日}

这保存在名为post的变量中。但是,当我尝试访问post.app或发布['app']时,我得到一个未定义的。谁能让我知道我哪里出错?

2 个答案:

答案 0 :(得分:2)

当我错误地在一个已经是字符串的对象上使用JSON.stringify时,我发生了同样的问题,它看起来就像你正在做的那样。

答案 1 :(得分:1)

变化

var data = JSON.stringify({
   'app': 'reviews',
   'name': '',
   'review': '',
   'response': '',
   'rating': rating,
   'url': url,
   'date': date
 });

var data = {
   'app': 'reviews',
   'name': '',
   'review': '',
   'response': '',
   'rating': rating,
   'url': url,
   'date': date
 };