如何访问AJAX的数组响应

时间:2012-04-21 18:29:29

标签: javascript jquery

这是我的AJAX调用响应,采用数组格式

[1,2,3,4,5,6]

success: function(outputfromserver) {


$.each(outputfromserver, function(index, el) 
{ 


});

我们如何访问outputfromserver的所有值?

表示outputfromserver Zeroth值为1,第二个元素为2,-----依此类推

4 个答案:

答案 0 :(得分:11)

了解您的AJAX请求是什么样的。我建议使用$ .ajax()并将dataType指定为JSON,或者使用$ .getJSON()。

这是一个演示$ .ajax()的示例,并向您展示如何访问数组中返回的值。

$.ajax({
    url: 'test.json', // returns "[1,2,3,4,5,6]"
    dataType: 'json', // jQuery will parse the response as JSON
    success: function (outputfromserver) {
        // outputfromserver is an array in this case
        // just access it like one

        alert(outputfromserver[0]); // alert the 0th value

        // let's iterate through the returned values
        // for loops are good for that, $.each() is fine too
        // but unnecessary here
        for (var i = 0; i < outputfromserver.length; i++) {
            // outputfromserver[i] can be used to get each value
        }
    }
});

现在,如果您坚持使用$ .each,则以下内容适用于成功选项。

success: function (outputfromserver) {

    $.each(outputfromserver, function(index, el) {
        // index is your 0-based array index
        // el is your value

        // for example
        alert("element at " + index + ": " + el); // will alert each value
    });
}

随时提出任何问题!

答案 1 :(得分:1)

该数组是一个有效的JSON字符串,您需要使用JSON解析器解析它。

success: function(outputfromserver) {
    var data = JSON.parse(outputfromserver);
    $.each(data, function(index, el) { 
        // Do your stuff
    });
},
...

答案 2 :(得分:1)

您可以使用JS对象,如数组

例如这样:

// Loop through all values in outputfromserver
for (var index in outputfromserver) {
  // Show value in alert dialog:
  alert( outputfromserver[index] );
}

这样你就可以获得数组第一维的值, 以上for..loop将获得如下值:

// Sample values in array, case: Indexed array
outputfromserver[0];
outputfromserver[1];
outputfromserver[2];
// So on until end of world... or end of array.. whichever comes first.
outputfromserver[...];

但是,以这种方式实现时,通过使用for ( index in array ),我们不仅可以获取索引1,2,3,4,...键,还可以获取与命名索引相关的值:

// Sample values in array, case: accosiated/mixed array
outputfromserver["name"];
outputfromserver["phone"];
outputfromserver[37];
outputfromserver[37];
outputfromserver["myindex"];
// So on until end of world... or end of array.. whichever comes first.
outputfromserver[...];

简而言之,数组可以包含索引值和/或名称关联值,这无关紧要,数组中的每个值仍然会被处理。

如果您使用的是多维内容

然后你可以添加嵌套的for (...)循环或者使用递归函数来遍历所有的值。

多维将是这样的:

// Sample values in array, case: indexed multidimensional array
outputfromserver[0][0];
outputfromserver[0][1];
outputfromserver[1][0];
outputfromserver[1][...];
outputfromserver[...][...];

更新,JSON对象:

如果服务器返回JSON编码的字符串,您可以通过以下方式将其转换为javascript对象:

try { 
    // Try to convert JSON string with jQuery:
    serveroutputobject = $.parseJSON(outputfromserver); 
} catch (e) {
    // Conversion failed, result is not JSON encoded string 
    serveroutputobject = null;
}

// Check if object converted successfully:
if ( serveroutputobject !== null ) {
    // Loop through all values in outputfromserver
    for (var index in serveroutputobject) {
        // Append value inside <div id="results">:
        $('#results').append( serveroutputobject[index] + "<br/>" );
    }
}
// In my own projects I also use this part if server can return normal text too:
// This way if server returned array we parse it and if server returns text we display it. 
else {
    $('#results').html( outputfromserver );
}

更多信息here

答案 3 :(得分:0)

$.ajax({
    type : "POST",
    dataType: "json",
    url : url,
    data:dataString,
    success: function(return_data,textStatus) {



         temperature.innerText=return_data.temp;
                   // OR
        **temperature.innerText=return_data['temp'];**  

    },
    error: function(jqXHR, textStatus, errorThrown) { 
                 alert("Error while accessing api [ "+url+"<br>"+textStatus+","+errorThrown+" ]"); return false;    
    }
 });