无法在PHP中捕获POST变量

时间:2016-09-11 08:31:10

标签: javascript php

以下是来自javascript的ajax调用

let dataX = {"VERSION": "iVersion_100", "ITOKEN": "iToken", "METHOD":"GSB"};

$.ajax({
        type: "POST",
        url: "target.php",
        data: dataX,
        dataType: "json"
    })
    .done(function(data) {
console.log(data);
});

现在,这是简单的target.php

<?php ob_start();
$iVersion = $_REQUEST['VERSION'];
$iToken = $_REQUEST['ITOKEN'];
$iMethod = $_REQUEST['METHOD'];
echo $iVersion;
?>

我期待看到&#34; iVersion_100&#34;在控制台日志中。相反,它返回NULL。我的头撞了几乎打破了墙。绝望地请求你的帮助。提前谢谢。

2 个答案:

答案 0 :(得分:3)

您正在设置dataType: "json"

但PHP以iVersion_100

响应

这是无效的JSON

由于你没有.error处理程序,似乎jQuery&#34;默默地忽略&#34;此错误情况和最终结果是.done 从未调用

将您的代码更改为

            let dataX = {"VERSION": "iVersion_100", "ITOKEN": "iToken", "METHOD":"GSB"};

            $.ajax({
                    type: "POST",
                    url: "target.php",
                    data: dataX,
                    dataType: "json"
            })
            .error(function() {
                    console.log(arguments);
            })
            .done(function(data) {
                    console.log('hello');
                    console.log(data);
            });

您会看到 错误,"JSON.parse: unexpected character at line 1 column 1 of the JSON data"

答案 1 :(得分:0)

由于您在此代码中使用dataType: "json",因此您告诉ajax以json格式获取返回数据。

代替在json中发送数据,您只需echo $iVersion;回显数据。如果你想使用json作为dataType,请在输出之前解析数据,就像这个echo json_encode($iVersion);一样,你将获得数据。

如果你想使用简单的输出无json格式,请从ajax属性中删除dataType: "json"。您将获得输出echo $iVersion;