在php中获取ajax post数据
上面是我的AJAX帖子,下面是我的PHP:在php中获取ajax post数据,php,jquery,Php,Jquery,上面是我的AJAX帖子,下面是我的PHP: $.ajax({ url: '/gateway/', type: 'POST', data: {test : 'test'}, dataType: 'json', }).done(function(){ console.log('done'); }); 问题是,这无法工作(我得到一个空值)-为什么 我知道我的调用正在访问PHP代码,因为我可以转储任何旧字符串: var_dump($_POST['test']);
$.ajax({
url: '/gateway/',
type: 'POST',
data: {test : 'test'},
dataType: 'json',
}).done(function(){
console.log('done');
});
问题是,这无法工作(我得到一个空值)-为什么
我知道我的调用正在访问PHP代码,因为我可以转储任何旧字符串:
var_dump($_POST['test']);
die();
我哪里出错了?只要删除这个
数据类型:“json”
。您的$\u POST['test']
是字符串值,而不是JSON字符串。您正在测试的POST值不是JSON,而是字符串
移除
var_dump('hello');
die();
它应该可以工作。或者更改PHP代码
dataType: 'json',
当您在AJAX请求中设置
数据类型:“json”
时,这意味着预期的响应应该被解析为json(而不是像其他人所说的那样,传出的帖子)
下面是一个精简的复制粘贴示例,供您构建。希望能有帮助
header('Content-Type: application/json');
exit(json_encode(array('data' => 'Bla bla bla')));
jQuery(文档).ready(函数(){
var ajax=$.ajax({
网址:“./”,
类型:“POST”,
数据:{test:'test'},
数据类型:“json”
});
完成(函数(数据){
$(“#result”).html(data.ABC);/*我不完全确定这是否是问题所在,但.done
已被弃用。此外,正如其他人提到的,您正在从服务器请求json,而没有收到json
您的代码应该如下所示
<?php
//is it POST
if($_SERVER['REQUEST_METHOD'] == 'POST'){
// set var
$test = isset($_POST['test']) ? $_POST['test'] : null;
//do some logic - skip that bit ;p
//was the request from AJAX, ok send back json
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
//always a good idea
header('Content-Type: application/json');
//json encode, notice the ABC, then look at the jQuery below
die(json_encode(
array('ABC' => 'From Response: '.$test)
));
}
}
?>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script>
jQuery(document).ready(function(){
var ajax = $.ajax({
url: "./",
type: "POST",
data: {test : 'test'},
dataType: "json"
});
ajax.done(function(data) {
$("#result").html(data.ABC); /* << See data is an object */
});
ajax.fail(function(xhr, status, error) {
$("#result").html(xhr.responseText);
});
});
</script>
<span id="result"></span>
我想向你推荐我的代码。请检查以下几点
检查您提供的url的位置。如果它在父目录中,那么您可以使用。/
访问它,最重要的是提供文件的扩展名。例如“gateway.php”
并编写成功和失败函数。它可以更好地了解正在发生的事情
$.ajax({
url: '/gateway/',
type: 'POST',
data: {test : 'test'},
success: function () {console.log('done');}
});
如果有任何错误,请发表评论
希望有帮助:)。如果有,请不要忘记将其绿色化:p尝试var\u dump($\u POST);
您看到了什么吗?打印$\u POST数组时会发生什么?打印时它只是空白。请尝试使用-data:{test':'test'}问题似乎与“数据”有关,我想数据是正确的……您是否能够在firebug控制台的参数下看到“测试”您的问题可能超出了问题中提供的代码范围。请确保您发送的请求带有准确的url
。
$.ajax({
type:'POST',
url:'gateway',
data:{test:'test'},
success: function(data){
if(data)
{
alert(data);
}
},
failure: function(){
alert(failed);
}
}) ;