我正在开发一个PHP项目,需要使用jQueryAjax将数据从HTML页面发送到另一个PHP页面。
但是当我尝试echo
时,$_POST
显示为空。我试着调试这个问题,在谷歌上搜索了数百万次,但没有成功。另一件事是IDE
显示警告与Cannot modify header it's already sent
有点相似
index.html
<html>
<head>
<title>Dashboard</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
</head>
<body>
<form id="labelForm" name="labelForm" method="post">
<label for="label">
Create Label
<input id="label" name="label" type="text">
</label>
<input id="create" id="create" type="submit" value="Create">
</form>
<script type="text/javascript">
$('#labelForm').submit(function (event) {
event.preventDefault();
alert("Send");
$.ajax({
type: 'POST',
url: 'storerole.php',
data: {
pos:"aky"
},
success: function (data) {
console.log(data);
}
});
});
</script>
</body>
</html>
storerole.php
<?php
var_dump($_POST);
?>
附加信息:我还使用了适用于Chrome的AJAX调试器,并在控制台中发现了AJAX请求,这表明AJAX完成了它的工作,问题出在PHP中。PS:堆栈溢出搜索也做了很多。
编辑1输出array(1) { ["pos"]=> string(3) "aky" }
显示在使用AJAX调试器的Chrome控制台中,而输出array(0) { }
显示在storerole.php
中
编辑2从form
中删除了action
以避免混淆。
php是无状态的——如果您发出ajax post请求,即一个包含ign post数据的请求。您将在javascript data
变量中看到该请求的响应(如果执行console.log(data);
,则在浏览器js控制台中可见)
如果您随后在浏览器中访问storerole.php
,这是第二个单独的GET请求(没有POST数据)。
如果你想在浏览器中访问页面,只需进行正常的表单提交,例如删除javascript并让浏览器提交表单:
<html>
<head>
<title>Dashboard</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
</head>
<body>
<form id="labelForm" name="labelForm" action="storerole.php" method="post">
<label for="label">
Create Label
<input id="label" name="label" type="text">
</label>
<input id="create" id="create" type="submit" value="Create">
</form>
</body>
</html>
这表明AJAX完成了它的工作,并且问题在PHP 中
因此,您应该在服务器端进行调试,因为您已经发布了标记和js。
IDE显示类似于此的警告。无法修改已经发送的头
使用任何IDE开发都没有问题,但您应该在chrome、firefox等更新的浏览器中测试您的应用程序。
你应该留意浏览器的控制台,看看js的错误。这肯定会产生错误。
您不能在js对象中使用=
签名:
pos="aky"
更改为:
pos : "aky"
data: {'param1' : 'data' , 'param2' : 'data' }
在ajax内容中,您在数据中使用了=。您应该使用:而不是
$.ajax({
type: 'POST',
url: 'storerole.php',
data: {
pos : "aky //use : here
},
success: function (data) {
console.log(data);
}
});
使用下面给出的数据值:
data: {
'value1':'val1','value2':'val2','value3':'val3'
}
对于错误"Cannot modify header it have sended",可以使用php文件顶部的ob_start()。