it-swarm.com.de

Analyse von jQuery AJAX Antwort

Ich verwende die folgende Funktion, um ein Formular über jQuery AJAX zu posten: 

$('form#add_systemgoal .error').remove();
var formdata = $('form#add_systemgoal').serialize();
$.ajaxSetup({async: false});  
$.ajax({     
    type: "POST",
    url: '/admin/systemgoalssystemgoalupdate?format=html',
    data: formdata,
    success: function (data) {
        console.log(data);   
    },
});

Der Posting ist gut, aber ich kann die Antwort nicht analysieren, sondern protokolliert die Konsole wie folgt

{
    "success": 1,
    "inserted": {
        "goal_id": "67",
        "goalsoptions_id": "0",
        "user_id": "0",
        "value": "dsfdsaf",
        "created": "2013-06-05 09:57:38",
        "modified": null,
        "due": "2013-06-17 00:00:00",
        "status": "active",
        "actions_total": "0",
        "actions_title": "sfdgsfdgdf",
        "action_type": "input",
        "points_per_action": "1",
        "expires": "2013-06-11 00:00:00",
        "success": 1
    }
}

was ich glaube, ist die Antwort, die ich suche.

Wenn ich jedoch versuche, alert(data.success); oder eines der anderen Mitglieder des Antwortobjekts auszuführen, ist es undefined.

Jeder Rat wird geschätzt.

19
Barry Hamilton

berufung

var parsed_data = JSON.parse(data);

sollte in der Lage sein, auf die Daten wie gewünscht zuzugreifen.

console.log(parsed_data.success);

sollte jetzt '1' anzeigen

14
sjmarshy
 $.ajax({     
     type: "POST",
     url: '/admin/systemgoalssystemgoalupdate?format=html',
     data: formdata,
     success: function (data) {
         console.log(data);
     },
     dataType: "json"
 });
11
Kevin Bowersox

Stellen Sie sich vor, dies ist Ihre Antwort von Json

{"Visit":{"VisitId":8,"Description":"visit8"}}

So analysieren Sie die Antwort und greifen auf die Werte zu

    Ext.Ajax.request({
    headers: {
        'Content-Type': 'application/json'
    },
    url: 'api/fullvisit/getfullvisit/' + visitId,
    method: 'GET',
    dataType: 'json',
    success: function (response, request) {
        obj = JSON.parse(response.responseText);
        alert(obj.Visit.VisitId);
    }
});

Dadurch wird das Feld VisitId benachrichtigt

4

sie müssen den JSON-String analysieren, um Objekt zu werden

var dataObject = jQuery.parseJSON(data);

so kannst du es nennen wie:

success: function (data) {
    var dataObject = jQuery.parseJSON(data);
    if (dataObject.success == 1) {
       var insertedGoalId = dataObject.inserted.goal_id;
       ...
       ...
    }
}
3
Habibillah

Da Sie $.ajax und nicht $.getJSON verwenden, ist Ihr Rückgabetyp Nur-Text. Sie müssen jetzt data in ein JSON-Objekt konvertieren.

sie können dies entweder tun, indem Sie $.ajax in $.getJSON ändern (dies ist eine Abkürzung für $.ajax, die nur zum Abrufen von Json vorkonfiguriert ist).

Oder Sie können den String data nach Erhalt in JSON parsen:

    success: function (data) {
         var obj = $.parseJSON(data);
         console.log(obj);
    },
1
Rodik

Verwenden Sie parseJSON. Schauen Sie sich die doc

var obj = $.parseJSON(data);

Etwas wie das:

$.ajax({     
    type: "POST",
    url: '/admin/systemgoalssystemgoalupdate?format=html',
    data: formdata,
    success: function (data) {

        console.log($.parseJSON(data)); //will log Object

    }
});
0
Davor Zubak