我的表单:
<form id="new-protocol-form" method="post" role="form">
<textarea name="text"></textarea>
</form>
我的jquery ajax :
$('#submitProtocol').click(
function() {
$.ajax({
type: "POST",
url: "newProtocol.php",
data: $('#new-protocol-form').serialize(),
success: function() { alert{'ok'} },
error: function() { alert('error'); }
});
}
);
我的 newProtocol.php :
<script>
alert(<?php echo $_POST['text']; ?>);
</script>
显示了由ajax“success”方法触发的带有“ok”文本的警报窗口,但是我无法从newProtocol.php文件获取具有$_POST['text']
值的警报窗口。在javascript控制台中没有错误。
答案 0 :(得分:1)
您需要使用$_POST['text']
。你在不应该使用的地方使用括号。
此外,由于您使用的是AJAX,因此您可能不希望导航到其他页面。如果不阻止默认行为,则成功函数中的警报将永远不会触发。
newProtocol.php
<?php
echo $_POST['text'];
?>
的jQuery
$('#submitProtocol').click(function(event) {
event.preventDefault(); // stop the default click behavior
$.ajax({
type: "POST",
url: "newProtocol.php",
data: $('#new-protocol-form').serialize(),
success: function(data) {
console.log(data); // show the text being returned
},
error: function() { console.log('error'); }
});
}
);
另外,quit using alert()
用于获取返回值和故障排除。
答案 1 :(得分:0)
首先,$_POST
不是函数,它是一个数组。所以它应该是$_POST['text']
。另外,
<script>
alert(<?php $_POST('text'); ?>);
</script>
不会像您期望的那样创建警报,因为异步请求不会在目标页面中运行任何javascript。
由于您正在尝试测试AJAX是否正常工作,因此最好的方法是检查该请求返回的日期。例如:
//...
success: function(data) { console.log(data) },
//...