从ajax请求中解析jquery中的数组

时间:2015-08-12 17:30:39

标签: jquery arrays ajax

我正在努力正确地解析来自ajax请求的响应。 我有一个获取json数组的ajax请求,我需要做的就是正确解析它,所以我得到了两个值。

在php方面,我创建了这样的数组:

while($row = $result->fetch_assoc()) {

            $response[]=array("value" => $row["uid"], "text" => $row["value"]);
        }

当我print_r:

时,PHP中的数组看起来像这样
Array ( [0] => Array ( [value] => 6 [text] => 40 ) [1] => Array ( [value] => 7 [text] => 48 ) )

然后我对该数组进行json_encode并通过ajax将其发回。 这是我的ajax电话:

 $.ajax({
                type: 'GET',
                url: 'ajax.php?s='+selection,
                dataType: 'json',                        
                success: function (data) {
                        $.each( data, function( intValue, currentElement ) {
                                $.each(currentElement, function( key, value ) {
                                    console.log(key);
                                    console.log(value);
                                });
                        });

                }
        });

我原以为console.log(key)会显示6,console.log(value)会显示40但是我得到:

value
6
text
40
value
7
text
48

我真的需要帮助才能得到6和40然后是7和48(基于提供的数组)。

我尝试了很多方法,似乎没什么用。

4 个答案:

答案 0 :(得分:1)

您可以使用单个 $.each() 执行此类操作,并且可以访问对象属性,例如 object.property {{3} }



var data = [{
  value: 6,
  text: 40
}, {
  value: 7,
  text: 48
}];
$.each(data, function(i, v) {
  document.write(v.value);
  document.write(v.text);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

这对我有用:

 $.ajax({
                    url: URL,
                    dataType: "text",
                    async: true,
                    cache: false,
                    contentType: "application/x-www-form-urlencoded; charset=UTF-8",
                    crossDomain: true,
                    success: function (data2) {

                        json_obj2 = $.parseJSON(data2);

答案 2 :(得分:0)

您有一个不需要的额外each循环

您的javascript数据如下:

[{"value" : 6, "text" : 40}, {"value" : 7, "text" : 48}]

所以在第一个each循环中intVal将是数组的索引,而currentElement将是数组中的每个对象实例

对象实例如下:

{"value" : 6, "text" : 40}

所以currentElement.valuecurrentElement.text正是您要找的

$.each( data, function( intValue, currentElement ) {
      console.log(currentElement.value);
});

答案 3 :(得分:0)

也许,将php方面更改为:

$response[$row["uid"]] = $row["value"]