代码之家  ›  专栏  ›  技术社区  ›  Aaranihlus

使用$时在PHP中获取空数组。ajax[重复]

  •  3
  • Aaranihlus  · 技术社区  · 7 年前

    我有这个jQuery$。ajax脚本:

    var data = JSON.stringify( selected_products );
    
    $.ajax({ type: "POST", 
        url: "addtocart.php", 
        data: data, 
        dataType: 'application/json'
    }); 
    

    我将其发布到一个非常简单的PHP脚本中:

    $selected_products = json_decode($_POST['data'], true);
    print_r($selected_products);
    

    data:[{"id":"RECOLOURBALM","option":"Black","quantity":1},{"id":"TOWELS","quantity":1}]
    

    然而,这是响应的控制台读数:

    Array
    (
    )
    

    我认为请求正在成功,数据正在传递,但响应都是空的。

    我做错了什么?

    2 回复  |  直到 7 年前
        1
  •  3
  •   Darshan    7 年前
    $selected_products = json_decode($_POST['data'], true);
    echo $selected_products[0]['id'];
    echo '<br>';
    echo $_POST;
    echo '<br>';
    var_dump($_POST);
    

    在帖子中添加数据

    您现在得到null,这是因为这里给出了stringify。请这样更改代码。这肯定会奏效。

    var data=[{"id":"RECOLOURBALM","option":"Bordeaux","quantity":1},{"id":"TOWELS","quantity‌​":1}];
    //data = JSON.stringify(data);
    $.ajax({ 
        type: "POST", 
        url: "addtocart.php", 
        data: {'data':data}, 
        success:function(returndata){
            console.log(returndata);
        }
    });
    

    删除stringify。

        2
  •  1
  •   Harish Kommuri    7 年前

    Content-Type 设置为 application/json ,您必须接收以下数据。

    $data = json_decode(file_get_contents('php://input'), true);

    $_POST 将从请求中接收数据,该请求具有 内容类型 : x-www-form-urlencoded (表格数据)