簡體   English   中英

如何從AJAX讀取此JSON響應

[英]How to read this JSON response from AJAX

這是我對AJAX的回應

{"screen":[{"screen_name":"SCR1","screen_id":"1"},{"screen_name":"SCR2","screen_id":"2"},{"screen_name":"SCR3","screen_id":"3"},{"screen_name":"SCR4","screen_id":"4"},{"screen_name":"SCR5","screen_id":"5"},{"screen_name":"BIGSCR","screen_id":"6"}]}
success: function(response) {
    var jsondata = JSON.stringify(response);
    console.log(jsondata);
    var html = '';
    for (var i = 0; i < jsondata.screen.length; i++) {
        var screenName = jsondata.screen[i].screen_name;
        var screenId = jsondata.screen[i].screen_id;
        html += '<option value="' + screenName + '">' + screenId + '</option>';
    }
    $('#SCname').append(html);
}

但是我不斷

Uncaught TypeError:無法在for循環中讀取未定義的屬性“ length”

嘗試一下:有效。 像絲綢一樣光滑:(請參閱注釋以獲取解釋)

<select id="SCname"></select>
<script>
    $.ajax({
            dataType: 'json',
            //This JSON datatype returns a json encoded response
            url:"api/test.php",
            //This is the URL From where you fetch the JSON Data
            success: function(response){
                //Since the response array object has a single array element "screen", we make it myArray
                myArray = response["screen"];
                console.log(myArray);
                //We get six Objects in myArray.
                //Thsese are Arrays of your six screens . Now Using Loops
                var html = '';
                for (var i = 0; i < myArray.length; i++) {
                    // Each element is inside DOuble Array like: myArray[0]["screen_name"]
                    var screenName = myArray[i]["screen_name"];
                    var screenId = myArray[i]["screen_id"];
                    html += '<option value="' + screenName + '">' + screenId + '</option>';
                }
                $('#SCname').append(html);

                //Check your console ouput
                console.log(html);
            }  
      });
</script>

你不想stringify ,而是parse 更正它必須是:

var jsondata = JSON.parse(response);

但是請記住,jQuery可能已經為您解析了JSON。

JSON.stringify(object)返回一個字符串。 您需要一個JSON.parse(string) –返回一個對象。 另外,如果您的response 已經是一個object ,那么您根本就不必解析它:

success: function(jsonData) {
      var html = '';
      for (var i = 0; i < jsonData.screen.length; i++) {
          var screenName = jsonData.screen[i].screen_name;
          var screenId = jsonData.screen[i].screen_id;
          html += '<option value="' + screenName + '">' + screenId + '</option>';
      }
      $('#SCname').append(html);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM