将js数组传递给PHP

时间:2012-06-17 13:21:36

标签: php javascript jquery ajax

为什么我不能通过PHP中的$ _POST访问我的数组?我正在尝试使用jQuery $ .post方法。以下是修正后的代码及其建议:

我的javascript:

<script type="text/javascript">
var selectedValues;
var serializedValues;
$("td").click(function() {
$(this).toggleClass('selectedBox');

// map text of tds to selectedValues
selectedValues = $.map($("td.selectedBox"), function(obj) {
        return $(obj).text();

});

serializedValues = JSON.stringify(selectedValues);

// $.post('/url/to/page', {'someKeyName': variableName}); //exemple
$.post('handler.php', 
      {'serializedValues' : serializedValues}, 
      function(data) {
        //debug 
     }
);

});

</script>

我的php:

<?php
if(isset($_POST['serializedValues'])) {

            var_dump($_POST['serializedValues']);
            $originalValues = json_decode($_POST['serializedValues'], 1);
            print_r($originalValues);

        }


?>

2 个答案:

答案 0 :(得分:4)

您应该将数组序列化为json字符串:

serializedValues = JSON.stringify(selectedValues)

并将其传递给php。然后用json_decode解码:

$originalValues = json_decode($_POST['serializedValues'], 1);

http://php.net/manual/ru/function.json-decode.php

答案 1 :(得分:2)

旁注;你的javascript可以重构成更简单的东西

$("td").click(function() {
    $(this).toggleClass('selectedBox');

    // map text of tds to selectedValues
    var selectedValues = $.map($("td.selectedBox"), function(obj) {
            return $(obj).text();
    });

    // $.post('/url/to/page', {'someKeyName': variableName}); //exemple
    $.post('handler.php', 
          {'serializedValues' : JSON.stringify(serializedValues)}, 
          function(data) {
            //debug 
         }
    );
});