在AJAX POST请求之后如何从服务器解析JSON响应?

时间:2017-06-10 12:24:27

标签: php jquery json ajax parsing

正如您可以从标题中看到问题。 这是我的工作:

发送

之类的请求
$.ajax({
  type: "POST",
  url: "http://www.example.com/api/",
  data: {
    'data': '1',
    'beacon': 'fried'
  },
  complete: function(res) {
    //need help here...
  }
});

API确实回应。 如果我做document.forms["myform"].submit(); 页面显示了像

这样的JSON响应
{
  "data": [{
    "Chief": "Max",
    "temperature": "65",
    "done": "yes",
    "cost": 24
  }]
}

那么我应该如何解析(检查,显示值)?试过很多方法。

任何帮助将不胜感激!

P.S。使用jquery-3.2.1.min.js

6 个答案:

答案 0 :(得分:4)

您可以在请求属性中将dataType设置为JSON:

 $.ajax({
    type: "POST",
    url: "http://www.example.com/api/",
    data: {'data': '1', 'beacon': 'fried'},
    dataType: 'JSON',
    complete: function (res) {
        console.log(res); // will be decoded
        // acces your values like this :
        var data = res.responceText.data[0];
        alert(data.Chief);
    }
 });

修改

添加了如何访问特定数据。

答案 1 :(得分:2)

你应该使用

  

JSON.parse()来

当您在json数据中有数组时,可以将其作为res.data [0] .cost或res.data [0] [" cost"]

进行访问

答案 2 :(得分:1)

如果需要,请使用JSON.parse(),否则您可以从res.data

获取数组

答案 3 :(得分:1)

尝试JSON.parse()

$.ajax({
    type: "POST",
    url: "http://www.example.com/api/",
    data: {'data': '1', 'beacon': 'fried'},
    complete: function (res) {
       var arr = JSON.parse(res).data;

       arr.forEach(function(obj) {
           var cost = obj.cost || null,
                Chief = obj.Chief || null,
                temperature = obj.temperature || null,
                done = obj.done || null;

           console.log('Cost: ' + cost + ', Chief: ' + Chief + ', Temperature:' + temperature + ', Done: ' + done);
       });
    }
});

答案 4 :(得分:1)

您可以使用JSON.parse()

 $.ajax({
        type: "POST",
        url: "http://www.example.com/api/",
        data: {'data': '1', 'beacon': 'fried'},
        complete: function (res) {
          var response = JSON.parse(res); 
        }
     });

答案 5 :(得分:-1)

第一个问题是它不允许来自不同域的响应,所以我将所有代码转移到api所在的同一服务器。

现在这段代码有效:

$.ajax({
  type: "POST",
  url: "../api/",
  data: {'data': '1', 'beacon': 'fried'},
  dataType: 'JSON',
  complete: function (res) {
  console.log(res);
  var r = JSON.parse(res.responseText);
  console.log(r.data[0].Chief); //retrieved Alex, that is response from the server
  }
});

全部谢谢!