如何使用POST请求将数据正确发送到PHP脚本?

时间:2017-07-25 00:36:49

标签: javascript php ajax

更新 尝试使用绝对错误的方法进行调试。我通过网络选项卡双击.php文件,并假设它正在发送与通过ajax POST请求相同的标头。这就是GET为我工作的原因(因为数据打包在URL中,双击php文件意味着我正在模拟ajax请求中会发生什么)。

感谢@Phil指出我正确的方向:使用错误打印结果数据后,我发现responseText包含了我最初想要的POST请求。

print_r($_POST)

我试图通过POST请求发送2条信息而不使用表单。

似乎正在正确地发送数据,因为表格数据''当我在Chrome的网络选项卡中查看php文件的标题时。但是,使用"Array ( )"检查是否在PHP端检索数据只会产生一个空数组:url = "/members/duc.php"; data = { "d": "test", "r": 156 }; $.ajax({ 'type': "POST", 'async': false, 'global': false, 'url': url, 'data': data, 'dataType': "json", 'success': function (data) { jsonContainer = data; console.log('success'); } });

JS

print_r($_POST);

PHP

method: 'POST'

尝试调试
5.将ajax method: 'GET'更改为print_r($_GET)会在服务器端显示代码为$_REQUEST的数据。
1.我尝试了var = file_get_contents("php://input");并设置了$.post 我试过发送json然后解码输入 3.我尝试使用$.ajax代替{duc:data} 4.我尝试将ajax中的数据设置为<html> <head> <title> </title> </head> <body> <select class = 'form-control'> <option>Select an Option:</option> <option>Electrical</option> <option>Mechanical</option> <option>Structural</option> <option>Others</option> </select> </body> </html>
6.用www尝试POST方法。包含在地址栏中,没有变化。

$ _ GET正在运作,因为

1 个答案:

答案 0 :(得分:0)

数据类型:&#39; JSON&#39;严格,检查你的php echo数据类型,确保是json

试试这个

//js
url = "/members/duc.php";
data = {
            "d": "test",
            "r": 156
        };
$.ajax({
            'type': "POST",
            'async': false,
            'global': false,
            'url': url,
            'data': data,
            //'dataType': "json",
            'success': function (data) {
                jsonContainer = data;
                console.log('success');
            }
        });
//php
print_r($_POST);

//js
url = "/members/duc.php";
data = {
            "d": "test",
            "r": 156
        };
$.ajax({
            'type': "POST",
            'async': false,
            'global': false,
            'url': url,
            'data': data,
            'dataType': "json",
            'success': function (data) {
                jsonContainer = data;
                console.log('success');
            }
        });
//php
echo json_encode($_POST);

会得到数据,但我认为第二种更好。