如何从AJAX读取此JSON响应

时间:2014-07-28 17:07:20

标签: javascript jquery ajax json

这是我对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);
}

但我继续

  

未捕获的TypeError:无法读取for循环

的未定义属性'length'

3 个答案:

答案 0 :(得分:2)

试试这个:它有效。像丝绸一样光滑:(见解释说明)

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

答案 1 :(得分:1)

您不希望stringify而是parse。纠正它必须是:

var jsondata = JSON.parse(response);

但请记住,jQuery可能已经为你解析了JSON。

答案 2 :(得分:1)

JSON.stringify(object)会返回一个字符串。您想要一个JSON.parse(string) - 它会返回一个对象。或者,如果您的response 已经是对象,那么您根本不必解析它:

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);