2017-06-10 3 views
1

Wie Sie das Problem aus dem Titel sehen können. Hier ist, was ich tue:WIE Parse JSON Antwort vom Server nach AJAX POST-Anfrage?

eine Anfrage senden wie

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

Die API tut Echo. Wenn ich document.forms["myform"].submit(); Seite zeigt eine JSON-Antwort wie

{ 
    "data": [{ 
    "Chief": "Max", 
    "temperature": "65", 
    "done": "yes", 
    "cost": 24 
    }] 
} 

Wie soll ich analysieren (überprüfen, die Werte angezeigt werden)? Versucht viele Wege.

Jede Hilfe wäre willkommen!

P.S. mit Jquery-3.2.1.min.js

Antwort

1

Verwenden JSON.parse() wenn sonst erforderlich Sie Array von res.data

+0

Also, wenn ich Alert (res.data ["Kosten"]) Fehler auftritt – Khuma

+0

@Khuma 'Daten' ist ein Array von Objekten. Versuchen Sie 'alert (res.data [0] [" cost "])' – bassxzero

4

Sie könnten setzen Sie den Datentyp JSON in der Anfrage-Attribut erhalten können:

$.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); 
    } 
}); 

EDIT

Hinzugefügt, wie auf bestimmte Daten zugegriffen wird.

+0

viel einfacher als alle anderen Antworten und behandelt auch Fehler intern für ungültige json – charlietfl

+3

, aber dies funktioniert nur, wenn wir sicher sind, dass diese Antwort JSON ist. –

+0

@AjayDeepakKumar um so mehr Grund, es zu verwenden ... wird zu Fehler Callback gehen (und Versprechen abzulehnen), wenn es einen Parse-Fehler gibt – charlietfl

1

Versuchen 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); 
     }); 
    } 
}); 
+0

warum? Tun Sie dies mit dataType so wird es intern geparst und wird zu Fehler Callback gehen, wenn nicht gültig json – charlietfl

+0

zustimmen @charlietfl, aber trotzdem habe ich auch so versucht @ MH2K9 Ich habe einen Fehler – Khuma

1

Sie JSON.parse()

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

Sie sollten

JSON.parse()

Wie Sie Array in in json Daten verwenden verwenden können, können Sie es als res zugreifen können. data [0] .cost oder res.data [0] ["cost"]

+0

Vielen Dank, ich brauchte JSON.parse (res. AntwortText); das ist, was ich nicht wusste – Khuma

+0

Awesome, froh, dass es geholfen hat, bitte markieren Sie es als richtige Antwort, wenn es Ihnen geholfen hat –

-1

Nun, das erste Problem war, dass es keine Antwort aus einer anderen Domäne erlaubt, also habe ich den ganzen Code auf den gleichen Server übertragen, auf dem sich api befindet.

Jetzt dieser Code funktioniert:

$.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 
    } 
}); 

Dank all!

+0

Großartig, aber Sie müssen es nicht erneut analysieren. Es ist noch dekodiert. – JazZ