1

我有以下代码使用 ajax 将 Javascript 数组传递给 PHP:

在 HTML 中:

echo "<input type=\"hidden\" id= \"que_id\" name= \"que_id[]\" value=".$questions['que_id'].">";

这是在一个循环内。

在 Javascript 中:

var que_id_array = new Array();
    $('input[name="que_id[]"]').each(function(){
       que_id_array.push($(this).val());
    });

AJAX 调用:

$.ajax({
    type:"POST",
    url: 'questionmastermodify.php',
    data: { que_id:que_id_array},
    success: function(data) {
        $('.my_update_panel').html(data);
        $('#overlay').fadeOut();
    }
});

在 PHP 中:

$que_id = $_REQUEST['que_id'];

echo count($que_id);    

计数显示 1 而不是数组的大小,而在 Javascript 中,控制台显示:

console.log(que_id_array);

输出 :

["151", "152", "153", "154", "155", "156", "157", "158", "159", "160", "161", "162", "163", "164", "165", "166", "167", "168", "169", "170", "171", "172", "173", "174", "175", "176", "177", "178", "179", "180", "181", "182", "183", "184", "185", "186", "187", "188", "189", "190", "191", "192", "193", "194", "195", "196", "197", "198", "199", "200"]

我被困住了,因为我需要 PHP 中的这个数组,但无法将这个数组从 JS 传递给 PHP。

提前致谢....

桑迪505

4

3 回答 3

2

我对您的代码进行了快速测试......并进行了一些更改,它对我有用。
看看你的代码,特别是loop当你创建<input>字段时......

而且..在loop你有一个ID<input>......这根本不好!..改变它,class例如......

例如,这是我尝试过的:

主要 PHP

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>Document</title>
    <script src="http://code.jquery.com/jquery-1.9.0.min.js"></script>
    <script type="text/javascript">
        jQuery(document).ready(function() {
            $('#theForm').submit(function(event) {
                event.preventDefault();
                createTheArray();
            });
        });
        function createTheArray(){
            // Create the Array
            var que_id_array = new Array();
            $('input[name="que_id[]"]').each(function(){
                 que_id_array.push($(this).val());
            });
            console.log(que_id_array); // output ["151", "152", "153"] 
            sendTheForm(que_id_array); // do the ajax call
        }
        function sendTheForm(que_id_array){
            // AJAX Call
            $.ajax({
                    type:"POST",
                    url: 'questionmastermodify.php',
                    data: { que_id:que_id_array},
                    success: function(data) {
                            $('.my_update_panel').html(data);
                    }
            });
        }
    </script>
</head>
<body>
    <form id="theForm">
        <?php
            // your original Array
            $arrayName = array(
                array('que_id' => '151'),
                array('que_id' => '152'),
                array('que_id' => '153')
            );
            foreach ($arrayName as $key => $questions) {
                echo "<input type='text' class='que_id' name='que_id[]' value='{$questions['que_id']}'>";
            }
        ?>
        <input type="submit" value="send" />
    </form>
    <div class="my_update_panel">result will be loaded here...</div>
</body>
</html>

还有你的questionmastermodify.phpPHP 文件

<?PHP
    $que_id = $_REQUEST['que_id'];
    echo '<pre>';
    print_r($que_id);
    echo '</pre>';
?>

结果

form submit.. 之后,HTML 将打印出来:

<pre>Array
(
    [0] => 151
    [1] => 152
    [2] => 153
)
</pre>

而在console.log();

["151", "152", "153"]

试一试,祝你好运!

于 2013-10-14T10:09:04.767 回答
0

问题已经解决:

罪魁祸首是我使用的 jquery 版本。我正在使用 jQuery JavaScript Library v1.3.2 - 这导致了这个问题。

使用最新的:jquery-1.9.0.min.js 解决问题。

我接受了#gmo 提供的答案,因为它让我接近解决问题,以及关于不在循环中使用 id 属性的有用提示......

谢谢大家...

于 2013-10-15T06:06:33.070 回答
0

您可以将数组编码为 JSON:

data: { que_id: JSON.stringify(que_id_array)},

在 PHP 中,对其进行解码:

$que_id = json_decode($_REQUEST['que_id']);
echo count($que_id);  
于 2013-10-14T09:01:11.377 回答