【问题标题】:Unable to get posted array from jQuery无法从 jQuery 获取发布的数组
【发布时间】:2009-05-08 08:42:28
【问题描述】:

我正在尝试使用 jQuery post 方法发布一组数组,但我无法获取数组的值。如何获取已发送的数组的值? 如果有人可以帮助我,我将不胜感激......

这是我所做的:

    $(document).ready( function()
        {
            $("#submit_info").click (
                function()
                {
                    var batchArr= new Array();
                    batchArr=arrPush('batch');
                    var facultyArr= new Array();
                    facultyArr=arrPush('faculty');
                    var levelArr= new Array();
                    levelArr=arrPush('level');
                    var sectionArr= new Array();
                    sectionArr=arrPush('section');
                    var shiftArr= new Array();
                    shiftArr=arrPush('shift');

                    $.post("server_side/college_info_insert.php",{
                            batchArr:batchArr,
                            facultyArr:facultyArr,
                            levelArr:levelArr,
                            sectionArr:sectionArr,
                            shiftArr:shiftArr
                        }, function(data)
                        {
                            alert(data);
                        });
                }
            );

            function arrPush(opt)
            {
                var Arr= new Array();
                Arr.push($("#"+opt+"_1").val());
                var count= $("#"+opt).val();
                var i=0;
                for(i;i<=count;i++)
                {
                    if(i==0)
                    {
                        Arr.push($("#txt"+opt).val());
                    }
                    else
                    {
                        Arr.push($("#txt"+opt+i).val());
                    }
                }
                return Arr;
            }
        }
    );

如何在下一页“college_info_insert.php”中获取数组值??

【问题讨论】:

    标签: php jquery ajax post


    【解决方案1】:

    好的,所以这实际上是一个非常普遍的问题。尚不清楚您不能将数组按原样从 javascript 发送到 PHP 并使其被识别。

    问题在于 PHP 不知道如何从 POST 请求中读取多个值 - 通常这样的事情需要 PHP 作者使用括号,例如:varname[]

    因此,基本上您必须将变量作为字符串发送。使用 JSON,您甚至可以使用单个变量名将复杂的对象作为字符串发送到 PHP。通常你会使用 JSON.stringify 或类似的东西 - 但如果你有一个简单的数组,你甚至可能不需要它。

    这是问题/解决方案的完整示例,使用 jquery 和 $.post 找到:

    假设你有一个文件myurl.php

    <?php
    print_r($_POST);
    ?>
    

    在单独的文件(或控制台)中,您尝试:

    var myarray = Array('some','elements','etc');
    var mydata = {postvar1: 'string', postvar2: myarray};
    $.post('myurl.php', mydata, function(response) { 
        alert("response: " + response);
    });
    

    这不行!结果是postvar2只包含“etc”。

    解决方案是强制数组转换为可以从 PHP 解码的 JSON 字符串。

    var myarray = Array('some','elements','etc');
    var json_array = $.map(myarray,function(n) {
        return '"'+n+'"';
    });
    var mydata = {postvar1: 'string', postvar2: '['+json_array+']' };
    $.post('myurl.php', mydata, function(response) { 
        alert("response: " + response);
    });
    

    在 PHP 端,您现在必须使用:json_decode($_POST['myarray']); 将结果放入正确的数组中。

    请注意,此示例假定您的数组中有非常简单的字符串或数字。如果您有复杂的对象,则需要使用 JSON.stringify 函数来处理额外的引号、转义特殊字符等。

    【讨论】:

      【解决方案2】:

      不确定我是否理解这个问题,但不会像这样工作

      if (isset($_POST['batchArr'])) {
         $batchArr = $_POST['batchArr'];
         // Then populate your html here e.g
         echo $batchArr[0];
      

      }

      【讨论】:

        猜你喜欢
        • 2021-10-25
        • 2013-03-20
        • 1970-01-01
        • 2022-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多