6

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

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

success: function(outputfromserver) {


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


});

我们如何从服务器访问输出的所有值?

意味着 outputfromserver 第零个值为 1 ,第二个元素是 2 ,------依此类推

4

4 回答 4

15

了解您的 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
    });
}

随意问任何问题!

于 2012-04-21T19:10:54.487 回答
2

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

success: function(outputfromserver) {
    var data = JSON.parse(outputfromserver);
    $.each(data, function(index, el) { 
        // Do your stuff
    });
},
...
于 2012-04-21T18:33:10.250 回答
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 );
}

更多信息在这里

于 2012-04-21T18:42:13.397 回答
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;    
    }
 });
于 2013-07-09T05:58:49.737 回答