首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在AJAX调用中使用foreach循环?

如何在AJAX调用中使用foreach循环?
EN

Stack Overflow用户
提问于 2016-11-30 10:18:40
回答 2查看 1.6K关注 0票数 0

我有一个从AJAX代码中调用的foreach循环。看起来foreach循环被直接跳过了。我最终想让foreach循环使用数组中的每个值执行查询,但我首先尝试测试foreach循环是否工作(它不工作)。我收到的警报(来自我的AJAX)只是原始数组,而不是添加了项的数组。

PHP:

代码语言:javascript
复制
   $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:

代码语言:javascript
复制
$(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代码上。

EN

回答 2

Stack Overflow用户

发布于 2016-11-30 11:35:23

如果您仅通过post发送值...就像在评论中一样: 1,2,3你的$_POST‘’myArray‘是你发送到的内容的原样接收。

因此,数据变量将接收类似于'1','2','3‘的数组

好吧..。因为您没有将变量$data创建为数组,是的,只是将一个数组放入其中。

PHP不认为$data[]变量与$data变量相同。

因此,PHP神奇地覆盖了每个相同值的值。

因此,我认为如果您想重复同一数组中的值,则必须使用array_push引用该数组

代码语言:javascript
复制
$data = $_POST['myArray']; 
foreach ($data as $item) {
    array_push($data, $item);
}

现在,当您返回此数组时,您将得到类似{1,2,3,1,2,3}的响应

票数 0
EN

Stack Overflow用户

发布于 2016-11-30 12:27:06

@David评论的答案:

在浏览器的调试工具中,查看网络请求。检查AJAX请求及其响应。如果结果完全用引号括起来,那么它只是一个字符串,而不是数组。您可能需要对$_POST‘’myArray‘服务器端进行JSON解码,才能将其解释为数组。

我需要将$data = $_POST['myArr'];更改为$data = json_decode($_POST['myArr']);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40879190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档