我正在努力正确地解析来自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(基于提供的数组)。
我尝试了很多方法,似乎没什么用。
答案 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;
答案 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.value
和currentElement.text
正是您要找的
$.each( data, function( intValue, currentElement ) {
console.log(currentElement.value);
});
答案 3 :(得分:0)
也许,将php方面更改为:
$response[$row["uid"]] = $row["value"]