使用 ajax 将 JSON 发送到 PHP

2022-08-30 13:47:02

我想将一些json格式的数据发送到php,并在php中执行一些操作。我的问题是我无法通过ajax将json数据发送到我的php文件。请帮帮我,我该怎么做。我试过这种方式。

<script>
$(function (){
 $("#add-cart").click(function(){
    var bid=$('#bid').val();
    var myqty=new Array()
    var myprice=new Array()

    qty1=$('#qty10').val();
    qty2=$('#qty11').val();
    qty3=$('#qty12').val();

    price1=$('#price1').val();
    price2=$('#price2').val();
    price3=$('#price3').val();

    var postData = 
                {
                    "bid":bid,
                    "location1":"1","quantity1":qty1,"price1":price1,
                    "location2":"2","quantity2":qty2,"price2":price2,
                    "location3":"3","quantity3":qty3,"price3":price3
                }
    var dataString = JSON.stringify(postData);

    $.ajax({
            type: "POST",
            dataType: "json",
            url: "add_cart.php",
            data: {myData:dataString},
            contentType: "application/json; charset=utf-8",
            success: function(data){
                alert('Items added');
            },
            error: function(e){
                console.log(e.message);
            }
    });
});
});
</script>

在PHP中,我使用:

if(isset($_POST['myData'])){
 $obj = json_decode($_POST['myData']);
 //some php operation
}

在 php 文件中添加print_r($_POST) 时,它会在 firebug 中显示 array(0) {}。


答案 1

丢失 .您不是向服务器发送 JSON,而是发送正常的 POST 查询(恰好包含 JSON 字符串)。contentType: "application/json; charset=utf-8",

这应该使你所拥有的工作。

问题是,你根本不需要使用或在这里。只需做:JSON.stringifyjson_decode

data: {myData:postData},

然后在 PHP 中:

$obj = $_POST['myData'];

答案 2

这是因为预先填充了表单数据。$_POST

若要获取 JSON 数据(或任何原始输入),请使用 php://input

$json = json_decode(file_get_contents("php://input"));

推荐