【问题标题】:How to send jquery array to php? [closed]如何将jquery数组发送到php? [关闭]
【发布时间】:2016-02-03 19:00:58
【问题描述】:

我在将 jquery 数组发送到 php 时遇到问题?首先,我在 html 中有 1 个表单,然后单击添加,现在有 2 个表单。接下来,我将表单中的数据输入到 jquery 数组中,然后从 jquery 数组中我无法发布到 php 数组变量。这个问题怎么解决?请高手帮帮我,谢谢

<?php

        $pertama = json_decode($_POST['pertama']); //can not work
        $kedua = json_decode($_POST['kedua']);
        foreach($pertama as $k=>$val)
        {
            $date = $val;
            $work =$kedua[$k];
        }

        echo $pertama;

?>
<!doctype html>
<html>
<head>
    <title> test </title>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
</head>


<body>
    <div>
        <div>
            <form>
                <div class="inputs">
                <div>
                <a href="#" id="add">Add</a> | <a href="#" id="remove">Remove</a>
                <input type="text" name="nama[]" class="pertama"/></div>
                <input type="text" name="lahir[]" class="kedua"/></div>
                </div>
                <input name="submit" type="button" class="submit" value="Submit" />
            </form>
        </div>
    </div>
    <div class="field_wrapper">
    </div>

    <script type="text/javascript">
        $(document).ready(function(){

            var i = $('input').size();

            $('#add').click(function() {
                $('<div><input type="text" class="pertama" name="nama[]" required/><input type="text" class="kedua" name="lahir[]" /></div>').fadeIn('slow').appendTo('.inputs');
                i++;
            });

            $('#remove').click(function() {
                if(i > 0) {
                    $('.pertama:last,.kedua:last').remove();
                    i--;
                }
            });

            $('#reset').click(function() {
                while(i > 2) {
                    $('.pertama:last,.kedua:last').remove();
                    i--;
                }
            });

            // here's our click function for when the forms submitted

            $('.submit').click(function(){

                var arraysatu = [];
                var arraydua = [];
                $.each($('.pertama'), function() {
                    arraysatu.push($(this).val());
                });

                $.each($('.kedua'), function() {
                    arraydua.push($(this).val());
                });

                $.post('test2.php', { arraysatu: JSON.stringify(arraysatu), arraydua: JSON.stringify(arraydua), function(data) { 
                    alert(data);
                });

            });

        });
        </script>
</body>
</html>

【问题讨论】:

  • 您的代码有语法错误。 { arraysatu: JSON.stringify(arraysatu) 是错字吗?
  • 忘记关闭括号。
  • 请尝试添加一些故障排除信息,而不仅仅是代码。在服务器或浏览器控制台中抛出的错误会有所帮助。还有您为调试此问题所采取的步骤
  • 这些不是更好吗:$('.pertama').each(function() { arraysatu.push($(this).val()); });

标签: javascript php jquery html ajax


【解决方案1】:

您忘记在 post 方法中关闭括号,我假设最后一个函数是您的回调,而之前的所有内容都是您的数据。

<?php

        $pertama = json_decode($_POST['pertama']); //can not work
        $kedua = json_decode($_POST['kedua']);
        foreach($pertama as $k=>$val)
        {
            $date = $val;
            $work =$kedua[$k];
        }

        echo $pertama;

?>
<!doctype html>
<html>
<head>
    <title> test </title>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
</head>


<body>
    <div>
        <div>
            <form>
                <div class="inputs">
                <div>
                <a href="#" id="add">Add</a> | <a href="#" id="remove">Remove</a>
                <input type="text" name="nama[]" class="pertama"/></div>
                <input type="text" name="lahir[]" class="kedua"/></div>
                </div>
                <input name="submit" type="button" class="submit" value="Submit" />
            </form>
        </div>
    </div>
    <div class="field_wrapper">
    </div>

    <script type="text/javascript">
        $(document).ready(function(){

            var i = $('input').size();

            $('#add').click(function() {
                $('<div><input type="text" class="pertama" name="nama[]" required/><input type="text" class="kedua" name="lahir[]" /></div>').fadeIn('slow').appendTo('.inputs');
                i++;
            });

            $('#remove').click(function() {
                if(i > 0) {
                    $('.pertama:last,.kedua:last').remove();
                    i--;
                }
            });

            $('#reset').click(function() {
                while(i > 2) {
                    $('.pertama:last,.kedua:last').remove();
                    i--;
                }
            });

            // here's our click function for when the forms submitted

            $('.submit').click(function(){

                var arraysatu = [];
                var arraydua = [];
                $.each($('.pertama'), function() {
                    arraysatu.push($(this).val());
                });

                $.each($('.kedua'), function() {
                    arraydua.push($(this).val());
                });

                $.post('test2.php', { arraysatu: JSON.stringify(arraysatu), arraydua: JSON.stringify(arraydua)}, function(data) { 
                    alert(data);
                });

            });

        });
        </script>
</body>
</html>

【讨论】:

    【解决方案2】:

    右括号:

    { arraysatu: JSON.stringify(arraysatu), arraydua: JSON.stringify(arraydua) } <====
    

    【讨论】:

      【解决方案3】:

      找出差异:

      $pertama = json_decode($_POST['pertama']); //can not work
                                     ^^^^^^^
      $kedua = json_decode($_POST['kedua']);
                                   ^^^^^
      $.post('test2.php', { arraysatu: JSON.stringify(arraysatu), arraydua: JSON.stringify(arraydua), function(data) {
                             ^^^^^^^^                             ^^^^^^^^
      

      注意名称差异。

      【讨论】:

        【解决方案4】:

        $.post 的示例部分,您可以看到如何将数组发送到服务器。您是否尝试过:

        $.post('test2.php', 
               {"arraysatu[]": arraysatu, 
                "arraydua[]": arraydua}, 
                function(data) { 
                        alert(data);
                    });
        

        【讨论】:

        • 还是不行,你能帮帮我吗?谢谢
        • 这对我有用:$.post("test2.php", {"arraysatu": arraysatu, "arraydua":arraydua}, function(){alert("fin");} );
        猜你喜欢
        • 1970-01-01
        • 2013-09-19
        • 2017-12-14
        • 2023-03-31
        • 2011-05-13
        • 2010-12-22
        • 1970-01-01
        • 1970-01-01
        • 2011-02-19
        相关资源
        最近更新 更多