繁体   English   中英

如何通过jquery / ajax从php获取数组值并将其传递到另一个php文件?

[英]How to get an array value from php via jquery/ajax and pass it to another php file?

这是我的PHP代码, $contents必须在change事件之后传递。

<?php

    if($flag == true){
        $contents = $store; // this is the array that needs to be passed
        $color = array();
        foreach($store as $item){
            $color[] = $item['color'];
        }
        $u_color = array();
        $u_color = array_unique($color);
        echo '<label>Available Colors:</label>
        <select id="color">
            <option>Select a color</option>';
        foreach($u_color as $item){
            echo '<option>'.$item.'</option>';
        }
        echo '</select>';
    }

    ?>

这是我的jquery / ajax代码,应该在change事件之后触发

$(function () {
    $('#color').live('change', function () {
        var data = <? php echo json_encode($contents); ?> ;
        var the_array = $.parseJSON(data);
        $.ajax({
            url: 'wp-content/themes/twentyeleven-child/receiver.php',
            type: 'post',
            data: {
                data: the_array
            },
            datatype: 'json',
            success: function () {

            }
        });
    });
});

这是我的receiver.php

   <?php

print_r($_POST['data']);

?>

这是包含我的$contents

    Array
(
    [0] => Array
        (
            [size] => 2
            [price] => $59.00
            [color] => Black
        )

    [1] => Array
        (
            [size] => 4
            [price] => $59.00
            [color] => Black
        )

    [2] => Array
        (
            [size] => 6
            [price] => $59.00
            [color] => Black
        )

    [3] => Array
        (
            [size] => 8
            [price] => $59.00
            [color] => Black
        )

    [4] => Array
        (
            [size] => 10
            [price] => $59.00
            [color] => Black
        )

    [5] => Array
        (
            [size] => 12
            [price] => $59.00
            [color] => Black
        )

    [6] => Array
        (
            [size] => 14
            [price] => $59.00
            [color] => Black
        )

    [7] => Array
        (
            [size] => 16
            [price] => $59.00
            [color] => Black
        )

)

尝试这个

 var the_array = $array.join() ;

将以逗号分隔的字符串加入数组,并且可以将其传递给Ajax请求。

否则,您可以序列化数组并将arrayobject也传递给您的Request,

 vat the_array = $array.serializeArray();

我在这里看不到实际的Ajax请求...使用$.ajax ...或$.post ...或$.get

编辑和添加:

var data = '<?php echo json_encode($array);?>'; var the_array= $.parseJSON(data);

一个完整的例子:

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js" type="text/javascript"></script>
</head>
<body>
<?php
  $array = array();
  $array['id'] = '2335';
  $array['data'] = 'data string';
?>

<script type="text/javascript">
$(function() {
  var data = '<?php echo json_encode($array);?>';
  var the_array = $.parseJSON(data);
  // keep in mind that the_array is Object not Array 
  // may be you should convert it to an Array
  // other way is to post 'data' adding it to array  var the_array = ('data': data);   
});
</script>
</body>
</html>

发送ajax请求到页面

您可以使用jQuery.ajax()通过POST将数组发送到服务器(这是您的代码丢失了一部分)

$.ajax({
  type: 'POST',
  url: 'receiver.php',
  data: { myarray: the_array },
  success: function(data){
    // executed on success
  },
  dataType: dataType
});

初始化渲染页面中的值

如果要将一些代码传递给呈现的PHP模板中的js,请使用json_encode()将PHP数组/对象“转换”为JavaScript Object Notation字符串:

<script>
var the_array = <?php print json_encode($the_array); ?>;
// ...
</script>

回复异步(ajax)请求

如果您希望receiver.php将一些json返回给调用者(例如成功函数),则只需将其打印出来即可

<?php

// .. do stuff here ..

header('Content-type: application/x-json');
print json_encode($the_array);

?>

然后,您将success: “自动”获取$the_array作为data success:回调。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM