【问题标题】:AJAX call doesn't parse JSONAJAX 调用不解析 JSON
【发布时间】:2015-03-21 22:13:43
【问题描述】:

我有以下 JSON:

[
{
    "number": "0",
    "name": "Russell Westbrook",
    "attemptedFG": [
        {
            "x": "333",
            "y": "97",
            "made": "true",
            "assisted": "false"
        },
        {
            "x": "571",
            "y": "389",
            "made": "true",
            "assisted": "false"
        }
    ],
    "attemptedFT": [
        {
            "made": "true"
        },
        {
            "made": "false"
        }
    ],
    "rebounds": "5",
    "assists": "8",
    "steals": "2",
    "blocks": "1",
    "turnovers": "3",
    "fouls": "4"
}
]

我正在尝试使用 ReactJS 通过这个 AJAX 调用来解析它:

loadStatsFromServer: function() {
    $.ajax({
        url: this.props.url,
        dataType: 'json',
        success: function(data) {
            this.setState({data: data});
        }.bind(this),
        error: function(xhr, status, err) {
        console.error(this.props.url, status, err.toString());
        }.bind(this)
    });
}

AJAX 调用成功后,JSON 中的所有值仍会被字符串化。服务器发回一个带有“Content-Type”、“application/json”的响应头,所以我不确定它为什么不解析。

服务器端调用:

app.get('/stats.json', function(req, res) {
    fs.readFile('stats.json', function(err, data) {
        res.setHeader('Content-Type', 'application/json');
        res.send(data);
    });
});

非常感谢。

【问题讨论】:

  • 那么您能否显示已传输的 ACTUAL JSON?您可以从开发工具的“网络”选项卡中获取它。
  • 刚查过,实际的JSON是一模一样的。
  • 请出示截图。因为这是一个有效的 JSON,它不能被解析成你解释的内容。
  • 现在显示字符串化的值。

标签: ajax json parsing


【解决方案1】:

当您将字符串化的 json 对象从服务器发送到客户端时,您需要将该对象解析为可读的 javascript 对象。所以,需要在ajax请求成功时解析json:

success: function(data) {
        var result = $.parseJSON(data);
    }

现在result 是一个 javascript 可读对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-19
    • 2017-07-31
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    相关资源
    最近更新 更多