如何使用带有AJAX调用的foreach循环?

时间:2016-11-30 02:18:40

标签: php arrays ajax

我有一个从我的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代码。

2 个答案:

答案 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']);