无法使用ajax将javascript数组传递给php

时间:2013-10-14 08:57:53

标签: javascript php jquery ajax arrays

我有以下代码使用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

3 个答案:

答案 0 :(得分:2)

我用你的代码做了一个快速测试......并且做了一些改动,它对我来说很有用 在创建loop字段...

时,请查看您的代码,特别是<input>

而且...... loop ID<input> class ......这根本不好!改变它为<!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> 例如......

举个例子,这就是我尝试过的:

主要PHP

questionmastermodify.php

和您的<?PHP $que_id = $_REQUEST['que_id']; echo '<pre>'; print_r($que_id); echo '</pre>'; ?> PHP文件

form submit

结果

<pre>Array ( [0] => 151 [1] => 152 [2] => 153 ) </pre> 之后...... HTML将打印出来:

console.log();

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

{{1}}

试一试,祝你好运!

答案 1 :(得分:0)

您可以将数组编码为JSON:

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

在PHP中,解码它:

$que_id = json_decode($_REQUEST['que_id']);
echo count($que_id);  

答案 2 :(得分:0)

问题已解决:

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

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

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

谢谢大家......