【发布时间】:2015-10-10 09:33:46
【问题描述】:
我是一个 jQuery 初学者,希望有人可以帮助我,也可以给我一些解释。
我有一个 Ajax 调用,它返回一个 JSON 编码的字符串,每个项目都有两个值,一个 itemID 和一个 itemVal - 示例如下所示(使用console.log):
console.log(data) 结果:
string(225) "[{"itemID":1,"itemVal":"China"},{"itemID":2,"itemVal":"France"},{"itemID":3,"itemVal":"Germany"},{"itemID":4,"itemVal":"Italy"},{"itemID":5,"itemVal":"Poland"},{"itemID":6,"itemVal":"Russia"},{"itemID":7,"itemVal":"USA"},...]"
此处的项目数量各不相同,但如果列出了 itemID,则始终存在相应的 itemVal。
itemID 是唯一整数,itemVal 是纯文本。
到目前为止一切正常,但我的问题来了:
对于这里的每个 itemID,我必须对相应的 itemVal 做一些事情,例如说只是将其记录到控制台或提醒它进行测试。
我知道有多种方法可以解决此问题,例如jQuery.each, $.each, for, foreach 等,但由于我最近才开始,我不确定如何迭代此响应。我如何从中选择单个 itemID。
我尝试了不同的方法,包括。 $.parseJSON(data) 失败了,问题似乎是我在解码之前的输入是 二维数组而不是一维数组(我希望我在这里使用正确的术语)导致他们要么返回错误,要么提醒我字符串的每个字符。
更新 - 根据以下答案的失败示例
$.ajax({
type: "post",
url: "ajax.php",
cache: "false",
data: {
node: 'fetchCountries',
itemIDs: itemIDs // a list of integers
},
success: function(data){
console.log(data);
var arr = JSON.parse(data);
$.each($(arr),function(key,value){
console.log(value.itemVal);
});
}
});
更新 2 - 我的 PHP:
case "fetchCountries":
$intval_itemIDs = array_map("intval", $_POST["itemIDs"]);
$itemIDs = implode(",", $intval_itemIDs);
$stmt = $conn->prepare("SELECT itemID, en FROM Countries WHERE itemID IN(" . $itemIDs . ") ORDER BY itemID");
$stmt->execute();
$result = $stmt->get_result();
while($arrCountries = $result->fetch_assoc()){
$countries[] = array("itemID" => $arrCountries["itemID"], "itemVal" => $arrCountries["en"]);
}
var_dump(json_encode($countries));
break;
预期结果(用于测试):
console.log("China");
console.log("France");
console.log("Germany");
// ...
有人可以帮我解决这个问题吗?
非常感谢, 蒂姆
【问题讨论】:
-
它是一个数组或者它是 JSON(“文本”)。不是两者兼而有之。
-
你是对的,对不起。这是使用 PHP 查询的 Ajax 调用的结果。在 PHP 端,它是一个数组,在我将它发送回 JS 之前,我使用 json_encode - 你可以在我的帖子中看到它的外观。
-
你使用的是哪个 PHP 版本@WhistleBlower
-
@Uchiha:我可以在 5.4、5.5 和 5.6 之间进行选择,现在已将其设置为 5.6
标签: php jquery arrays foreach each