Javascript Can';无法获取AJAX发送的php帖子
我知道这里有很多类似的问题,但我查了其中20多个,没有一个解决方案对我有效 问题是:我向index.php发送了一个ajax post值。当我查看Firebug时,值就在那里,但是当我尝试在页面上回显它时,帖子是空的。我真的被这件事搞砸了 以下是我的完整代码:Javascript Can';无法获取AJAX发送的php帖子,javascript,php,jquery,ajax,post,Javascript,Php,Jquery,Ajax,Post,我知道这里有很多类似的问题,但我查了其中20多个,没有一个解决方案对我有效 问题是:我向index.php发送了一个ajax post值。当我查看Firebug时,值就在那里,但是当我尝试在页面上回显它时,帖子是空的。我真的被这件事搞砸了 以下是我的完整代码: <?php if(isset($_POST['action'])) { echo $_POST['action']; } ?> <!DOCTYPE html> <htm
<?php
if(isset($_POST['action']))
{
echo $_POST['action'];
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<meta charset="utf-8">
<!-- JQUERY LIBRARY AND SCRIPTS -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
<a href="index.php">Test</a>
<script type="text/javascript">
$(document).ready(function()
{
$('a').on('click', function()
{
$.ajax({
url: 'index.php',
type: 'POST',
data: {action: 'clicked'},
success: function(data)
{
console.log(data);
alert('Done!');
},
error: function(jqXHR, textStatus, errorThrown)
{
alert(errorThrown);
}
});
return false;
});
});
</script>
</body>
</html>
试验
$(文档).ready(函数()
{
$('a')。在('click',function()上
{
$.ajax({
url:'index.php',
键入:“POST”,
数据:{操作:'单击'},
成功:功能(数据)
{
控制台日志(数据);
警惕(‘完成’);
},
错误:函数(jqXHR、textStatus、errorshown)
{
警报(错误抛出);
}
});
返回false;
});
});
此代码不尝试将其打印到页面,而只是在ajax响应中用一个“clicked”字符串在整个HTML文档前面加上前缀。如果要在浏览器中显示,需要将该数据打印到页面中。如果您在FireBug中检查控制台,您将看到Ajax调用的响应正是我上面描述的
现在,如果您想将该值打印回页面,我建议您创建一个单独的文件,ajax.php:
<?php
if(isset($_POST['action']))
{
echo $_POST['action'];
}
?>
当然,这涉及ajax调用的成功处理程序。正如
Jay Blanchard所说
您正在使用AJAX向已在浏览器上呈现的页面发送变量。这永远不会起作用,因为从中获取变量的PHP是在服务器端运行并通过AJAX返回的,而不是在当前查看的页面中。
试试这个,它会起作用的:
<?php
if(isset($_POST['action']))
{
echo $_POST['action'];
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<meta charset="utf-8">
<!-- JQUERY LIBRARY AND SCRIPTS -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
<a href="#123">Test</a>
<div id="result"></div>
<script type="text/javascript">
$(document).ready(function()
{
$('a').on('click', function()
{
$.ajax({
url: 'index.php',
type: 'POST',
data: {action: 'clicked'},
success: function(data)
{
// console.log(data);
$("#result").html(data);
},
error: function(jqXHR, textStatus, errorThrown)
{
alert(errorThrown);
}
});
return false;
});
});
</script>
</body>
</html>
index.php:
<?php
if(isset($_POST['action']))
{
echo $_POST['action'];
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<meta charset="utf-8">
<!-- JQUERY LIBRARY AND SCRIPTS -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
<a href="#123">Test</a>
<div id="result"></div>
<script type="text/javascript">
$(document).ready(function()
{
$('a').on('click', function()
{
$.ajax({
url: 'index.php',
type: 'POST',
data: {action: 'clicked'},
success: function(data)
{
// console.log(data);
$("#result").html(data);
},
error: function(jqXHR, textStatus, errorThrown)
{
alert(errorThrown);
}
});
return false;
});
});
</script>
</body>
</html>
main.html:
<?php
if(isset($_POST['action']))
{
echo $_POST['action'];
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<meta charset="utf-8">
<!-- JQUERY LIBRARY AND SCRIPTS -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
<a href="#123">Test</a>
<div id="result"></div>
<script type="text/javascript">
$(document).ready(function()
{
$('a').on('click', function()
{
$.ajax({
url: 'index.php',
type: 'POST',
data: {action: 'clicked'},
success: function(data)
{
// console.log(data);
$("#result").html(data);
},
error: function(jqXHR, textStatus, errorThrown)
{
alert(errorThrown);
}
});
return false;
});
});
</script>
</body>
</html>
试验
$(文档).ready(函数()
{
$('a')。在('click',function()上
{
$.ajax({
url:'index.php',
键入:“POST”,
数据:{操作:'单击'},
成功:功能(数据)
{
//控制台日志(数据);
$(“#结果”).html(数据);
},
错误:函数(jqXHR、textStatus、errorshown)
{
警报(错误抛出);
}
});
返回false;
});
});
正如我所评论的,我不可能做我想做的事
这是因为一旦我的页面被加载,顶级PHP脚本就会被处理,但我的帖子上什么都没有
调用Ajax后,页面再次呈现,但顶级PHP脚本将一无所获,因为它是服务器端。事实证明,我甚至可以在页面上打印我的Ajax数据,但PHP$\u帖子永远不会得到它的价值
谢谢大家。您正在使用AJAX将变量发送到已在浏览器上呈现的页面。这永远不会起作用,因为从中获取变量的PHP已经在服务器端运行并通过AJAX返回,而不是在当前查看的页面中。问题是我不需要在页面上打印值。我只需要在帖子上使用这个值,就可以用它做另一个逻辑。明白了吗?你有没有检查Firebug中Ajax调用的响应?还是在控制台里?那里印的是什么?在我看来,你在这里面临着一个完全不同的问题。