2 Stimmen

Schleife durch JSON-Rückgabe gibt undefiniert zurück

Ich habe einen Webservice, der ein JSON-Objekt zurückgibt, aber wenn ich versuche, es zu durchlaufen, liefert jedes Element in jedem Objekt undefined zurück

Hier ist das JSON-Objekt, das vom Webservice zurückgegeben wird

[{"result":14,"question":"6 - 7   ","aID":70},{"result":29,"question":"3 - 5  ","aID":71},{"result":41,"question":"  ","aID":72},{"result":14,"question":"1 - 3  ","aID":73}]

Und hier wie ich durchgehe:

var resultAsJson = data.d;
$.each(resultAsJson, function (index, resObject) {
    $('#pollResults').append('' + resObject.result + ' ' +
                resObject.question + '');
    alert(resObject.question);

});

------------------ UPDATE ------------------

Hallo Leute, der obige Code hat gut funktioniert, das Problem war die JSON-Antwort, die ich vom Webservice zurückgegeben habe, war serialisiert wie folgt:

                Dim m_result As New Data.Objects.ObjectParameter("Result", GetType(Boolean))
            Dim lstofresult As List(Of addPollvote_Result) = Context.addPollvote(para_pid, para_aid, Date.Now, m_UID, Nothing, HttpContext.Current.Request.ServerVariables("REMOTE_ADDR"), Nothing, m_result).ToList
            Dim m_json As New Script.Serialization.JavaScriptSerializer
            Return m_json.Serialize(lstofresult)

Als ich die Serialisierung entfernte und nur die Liste zurückgab, hat es einwandfrei funktioniert, siehe den folgenden funktionierenden Code.

                Dim m_result As New Data.Objects.ObjectParameter("Result", GetType(Boolean))
            Dim lstofresult As List(Of addPollvote_Result) = Context.addPollvote(para_pid, para_aid, Date.Now, m_UID, Nothing, HttpContext.Current.Request.ServerVariables("REMOTE_ADDR"), Nothing, m_result).ToList
            Return lstofresult

Und es hat einwandfrei funktioniert.

2voto

Krease Punkte 15196

Stellen Sie sicher, dass resultAsJson tatsächlich ein JSON-Objekt ist und kein String und es sollte funktionieren (siehe dieses jsfiddle) - verwenden Sie resultAsJson = JSON.parse(resultAsJson) um die Umwandlung von String in JSON-Objekt durchzuführen.

0voto

Jerad Punkte 584

Das Problem scheint Ihre Datenquelle zu sein.

Zu Testzwecken würde ich eine 'for'-Schleife verwenden:

var resultAsJson = data.d;
var resultAsJsonLength = resultAsJson.length;

for(i=0;i' + resultAsJson[i].result + ' ' +
    resultAsJson[i].question + '');

    alert(resultAsJson[i].question);
 }

Sie müssen mehr Informationen darüber bereitstellen, wie Sie auf die Daten zugreifen, die anscheinend das Fundament Ihres Problems bilden...

0voto

Jay Punkte 17871

Geben Sie dies einen Versuch. Ich gehe davon aus, dass Sie jQuery verwenden:

// Der JSON-String vom Webdienst
var jsonString = '[{"result":14,"question":"6 - 7   ","aID":70},{"result":29,"question":"3 - 5  ","aID":71},{"result":41,"question":"  ","aID":72},{"result":14,"question":"1 - 3  ","aID":73}]';

// Parsen des JSON-Strings in ein JS-Objekt
var jsonObj = JSON.parse(jsonString);

// Schleife durchführen und das Notwendige daraus ziehen
$(jsonObj).each(function() {
    console.log(this.result + " " + this.question); 
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X