我有一个从我的AJAX代码调用的foreach循环。似乎正在跳过foreach循环。我最终想要使foreach循环使用数组中的每个值执行查询,但我首先尝试测试foreach循环的工作原理(它没有)。我收到的警报(来自我的AJAX)只是原始数组,而不是添加了项目的警报。
PHP:
$data = array();
if(isset($_POST['myArray']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']){
$data = $_POST['myArray'];
foreach ($data as $item) {
$data[] = $item;
}
echo json_encode($data);
die();
}
AJAX:
$(document).ready(function(){
$('#btn-addkegs').click(function() {
var arr = kegs;
var myArray = JSON.stringify(arr);
$.ajax({
url: "addkegs.php",
method: "POST",
dataType: "json",
data: {myArray: myArray},
success: function (result) {
alert("Your kegs have been added! These include: " + result);
textarea.value = "";
kegs = [];
}
});
});
});
对于行var arr = kegs;
,数组' kegs'通过输入字段和其他AJAX设置,但一切正常。我认为我的问题在于我的PHP代码。
答案 0 :(得分:0)
如果您只通过帖子发送值...就像在评论中一样:1,2,3 您的$ _POST [' myArray']正在接收您发送的内容。
因此,数据变量将收到类似这样的数组[' 1',' 2',' 3']
嗯...因为你没有创建一个变量$ data作为数组,是的,只在其中放入一个数组。
PHP不会将$ data []变量视为与$ data相同。
所以,PHP是魔法覆盖每个相同值的值。
所以,我想如果你想重复同一个数组中的值,你必须用array_push引用数组
$data = $_POST['myArray'];
foreach ($data as $item) {
array_push($data, $item);
}
现在当你返回这个数组时,你会得到像{1,2,3,1,2,3}
这样的回复答案 1 :(得分:0)
来自@David的评论回答:
在浏览器的调试工具中,查看网络请求。检查AJAX请求及其响应。如果结果完全用引号括起来,那么它只是一个字符串而不是一个数组。您可能需要JSON解码$ _POST [' myArray']服务器端将其解释为数组。
我需要将$data = $_POST['myArr'];
更改为$data = json_decode($_POST['myArr']);
。