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に渡すことができません。

前もって感謝します....

Sandy505

4

3 に答える 3

2

私はあなたのコードで簡単なテストを行いました...そしていくつかの変更を加えて、それは私にとってはうまくいきます。特にフィールドを作成するとき
のコードを見てください...loop<input>

また.. in the in the in the ... それはまったく良くありません!.. たとえば、それを変更し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

配列を 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 に答える
0

問題は解決されました:

犯人は、私が使用していたjqueryのバージョンでした。jQuery JavaScript Library v1.3.2 を使用していたため、この問題が発生しました。

最新の jquery-1.9.0.min.js を使用すると問題が解決します。

#gmo によって提供された回答を受け入れています。これにより、問題解決に近づき、ループで id 属性を使用しないことについての役立つヒントも得られました...

皆さんありがとう...

于 2013-10-15T06:06:33.070 に答える