将POST数组拆分为多个变量

时间:2012-04-17 11:35:15

标签: php jquery

我正在使用jQuery .post编写表单,负责处理的文件有代码:

print_r($_POST);

返回以下动态输出:

Array ( [data] => capacity=50-1000+people&bookingdate=17%2F04%2F2012&grade=1+star )

我正在尝试将此数组拆分为三个变量,即容量预订日期成绩,但实际上并不知道如何。知道怎么样?我尝试使用 echo $ _POST [“capacity”]; ,但它不起作用。

提前致谢!

修改

这是我正在使用的jQuery:

<script type="text/javascript">
$(document).ready(function() {
    $("#postData").click(function() {
        $("#last-step").hide(600);


       $.post('resources/process2.php', { data: $("#task5_booking").serialize() }, function(data) {
            $("#result").html(data);
      });


        return false;
    });
});
</script>

使用以下格式:

http://jsfiddle.net/xSkgH/93/

3 个答案:

答案 0 :(得分:3)

我认为你应该改变这一行:

$.post('resources/process2.php', { data: $("#task5_booking").serialize() }, function(data) {

$.post('resources/process2.php', $("#task5_booking").serialize(), function(data) {

请注意,我将第二个参数从对象文字更改为(url编码)字符串。这会将表单中的每个变量作为单独的变量发布(就像它直接发布一样)。在服务器端,每个变量应该在$_POST数组中单独提供。

答案 1 :(得分:1)

使用parse_str()

类似的东西:

parse_str($_POST['data'] , $output);

$capacity = $output['capacity'];
$bookingdate = $output['bookingdate'];
$grade = $output['grade'];

答案 2 :(得分:1)

你必须使用爆炸。

$data = array();  // A array to store the extracted value
$temp = explode("&", $data); // First of all explode by "&" to get the each piece
foreach($temp as $tval) {
   $t = explode('=', $tval); // Next explode by "=" to get the index and value
   $data[$t[0]] = $t[1];  //Add them to the array
}

另一种方法是使用parse_str()

$data = array();
parse_str($_POST['data'], $data);

在此之后,所有值都将映射到$data