首页 > 解决方案 > 使用 php 和 ajax 发布 json 数组 - 问题

问题描述

我无法理解如何通过脚本(如下)传递一个“动作”变量和一个用 php 创建的“产品”数组。

<?php
   $actionFile = "add";
   $products = array("Name product", "price", "sku", ....);
?>
<script>
    function uploadProducts() {
        var formData = new FormData();
        formData.append("action", <?php echo json_encode($actionFile); ?>);
        formData.append("products", <?php echo json_encode($products); ?>);

        $.ajax({
            type: 'POST',
            url: './controllers/uploadProductsController.php',
            data: formData,
            processData: false,
            contentType: false,
            beforeSend: function(){
                // Show image container
                //$("#loader").show();
                console.log("1");
            },
            success: function(response){
                //$('.response').empty();
                //$('.response').append(response);
                console.log("2");
                console.log(response);
            },
            complete: function(){
                // Hide image container
                //$("#loader").hide();
                console.log("3");
            }
        });            
    }
</script>

uploadProductsControlle.php(下面的代码)我将数组打印为单个字符串,而不是数组。

<?php
    include("../../functions.php");

    $action = $_POST['action'];
    $productsArr = $_POST['products'];
    $response = array();

    var_dump(json_encode($productsArr));  //ERROR THIS PRINT STRING

    foreach($productsArr as $product) {
        echo $product;
    }
    ?>

我需要“产品”作为一个数组来做一个循环。谢谢

标签: phpjsonajax

解决方案


你应该使用 json_decode 函数

$productsArr = json_decode($_POST['products']);

推荐阅读