我正在尝试使用Ajax向php发送POST请求。
如果我使用GET它工作正常,但使用POST我在php中收到的数据是空的。 我以json的形式发送数据。
这就是js代码的样子:
$.ajax(
{
type: 'POST',
url: 'php/GiveItBack.php',
contentType: "json",
data: {
word: 'abc'
},
success: function (json) {
alert(json);
},
error: function (jqXHR, textStatus, errorThrown) { alert('ERROR: ' + errorThrown); }
});
这是php / GiveItBack.php文件
<?php
$x = $_GET['word'];
echo 'Get: ' . $x;
$x = $_POST['word'];
echo '; Post: ' . $x;
$x = $_REQUEST['word'];
echo '; Request: ' . $x . ';';
?>
使用此代码,警报窗口中的消息如下所示:
获取:;发布:;要求:;
如果我用类型替换类型:&#39; POST&#39; :&#39; GET&#39; ,这就是我的结果进入警报窗口(正如我期待的那样):
获取:abc;发布:;要求:abc;
我无法看到我在这里失踪的东西。 代码中有问题,或者我需要做什么特殊设置才能使其正常工作。
顺便说一句: jquery-2.2.4.min 和php v5.6 和XAMPP v3.2.2。
谢谢。
答案 0 :(得分:4)
内容类型不正确,需要使用contentType: "application/x-www-form-urlencoded"
或'Content-Type': 'application/json'
$.ajax(
{
type: 'POST',
url: 'php/GiveItBack.php',
contentType: "application/x-www-form-urlencoded",
data: {
word: 'abc'
},
success: function (json) {
alert(json);
},
error: function (jqXHR, textStatus, errorThrown) { alert('ERROR: ' + errorThrown); }
});
答案 1 :(得分:1)
application/x-www-form-urlencoded
您的内容类型错误。如果您希望以您尝试的方式接收它,则应使用json_decode
。
如果你仍然希望坚持使用JSON,你将需要$json = file_get_contents('php://input');
$obj = json_decode($json, TRUE);
你的PHP输入:
my @list_of_files = glob ("/path/to/files/*");
答案 2 :(得分:0)
$.ajax(
{
method: 'POST',
url: 'php/GiveItBack.php',
data: {
word: 'abc'
},
success: function (json) {
alert(json);
},
error: function (jqXHR, textStatus, errorThrown) { alert('ERROR: ' + errorThrown); }
});
答案 3 :(得分:0)
删除contentType: json
,您应该可以使用$_POST
superblogal数组。如果使用contentType: json
,则包含参数的对象将转换为字符串并发送到服务器。要获得字符串,您需要使用
file_get_contents('php://input');
这是因为$_POST
仅包含与以下标题一起发送的数据:
当您设置contentType: json
时,jQuery会将application/json
标头添加到$_POST
不支持的请求中,因此JSON字符串将被视为原始输入,因此您需要使用php://input
流来检索它
答案 4 :(得分:0)
Ajax数据
删除contentType: json
:
$.ajax(
{
type: 'POST',
url: 'php/GiveItBack.php',
data: {
word: 'abc'
},
success: function (json) {
alert(json);
},
error: function (jqXHR, textStatus, errorThrown) { alert('ERROR: ' + errorThrown); }
});