2

JSON オブジェクトを返す Web サービスがありますが、それをループしようとすると、各オブジェクトの各項目が undefined を返します

これは、Web サービスから返された JSON オブジェクトです。

[{"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}]

そしてここで私がそれをループする方法:

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

});

- - - - - - - - - アップデート - - - - - - - - -

こんにちは皆さん、上記のコードは正常に動作しました。問題は、Web サービスから返された JSON 応答が次のようにシリアル化されていたことです。

                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)

シリアライゼーションを削除してリストを返すと、完全に機能しました。以下の作業コードを参照してください。

                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

そしてそれは完璧に機能しました。

4

3 に答える 3

2

resultAsJson実際に文字列ではなく JSON オブジェクトであることを確認してください。動作するはずです (この jsfiddle を参照resultAsJson = JSON.parse(resultAsJson)) 。文字列から json オブジェクトへの変換に使用します。

于 2012-12-11T19:31:25.940 に答える
0

これを試してみてください。jQueryを使用していると思います:

// The JSON String from the web service
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}]';

// Parse the JSON string into a JS object
var jsonObj = JSON.parse(jsonString);

// Loop through, and pull what you need from it
$(jsonObj).each(function() {
    console.log(this.result + " " + this.question); 
});
于 2012-12-11T19:27:26.930 に答える
0

問題はデータソースにあるようです。

テスト目的で「for」ループを使用します。

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

for(i=0;i<resultAsJsonLength;i++) {
    $('#pollResults').append('<p><strong>' + resultAsJson[i].result + ' ' +
    resultAsJson[i].question + '</strong></p>');

    alert(resultAsJson[i].question);
 }

データへのアクセス方法に関する詳細情報を提供する必要があります。これが問題の基盤と思われます...

于 2012-12-11T19:20:33.420 に答える