繁体   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