Javascript 标准表单提交呈现页面,但通过$.post()将数据传递到服务器,而不是呈现页面
我的问题是,当我按下“提交”按钮时,该代码显示为“blabla”:Javascript 标准表单提交呈现页面,但通过$.post()将数据传递到服务器,而不是呈现页面,javascript,php,jquery,Javascript,Php,Jquery,我的问题是,当我按下“提交”按钮时,该代码显示为“blabla”: <html> <head> </head> <body> <?php if (isset($_POST["text"])):{ echo $_POST["text"]; }else: ?> <form action="" method="post" id="testform"> <input type="text" va
<html>
<head>
</head>
<body>
<?php if (isset($_POST["text"])):{
echo $_POST["text"];
}else: ?>
<form action="" method="post" id="testform">
<input type="text" value="blablabla" name="text"/>
<input type="submit"/>
</form>
<?php endif ?>
</body>
</html>
但是,即使单击按钮,第二个代码仍会继续显示表单,并且不会显示“blabla”:
$(函数(){
$('#testbtn')。单击(函数(){
$.post('',{text:'blabla'});
});
});
为什么?在帖子中给出页面url
$.post(window.location, {tetx: 'blablabla'}, success: function(data) {
alert('successful.the response from server is' + data);
});
逻辑上,如果我们做一篇ajax文章,只需发送我们想在正文中显示的内容,否则就可以像提交普通表单一样显示整个页面。ajax调用中的成功回调将用innerHTML替换主体
<?php
function getBody() {
if (isset($_POST['text'])) {
// normally I would htmlspecialchars() this variable to disallow HTML injection
echo $_POST['text'];
}
}
if (isset($_POST['ajax'])) {
getBody();
exit();
}
<html>
<head>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript">
$(function (){
$('#testbtn').click(function() {
$.post('',{text:'blablabla', 'ajax':1}, function(bodyData) {
document.body.innerHTML = bodyData;
});
});
});
</script>
</head>
<body>
<?php if (isset($_POST["text"])):
getBody();
else: ?>
<form action="" method="post" id="testform">
<input type="button" id="testbtn"/>
</form>
<?php endif ?>
</body>
</html>
$.post()不会重新加载当前页面,并且由于您没有使用post结果重写正文,因此不会更改任何内容。在使用php或JavaScript将数据发布到服务器后,如何重新加载当前页面?window.location=“”在success函数中,但是如果可以在纯php中实现,为什么要这样做呢..我将success函数添加到post函数(){location.reload();});但这对我没有帮助。我只看到按钮,但没有看到“布拉布拉”。谢谢!我没有想到success post函数的'data'变量!=)在您的示例中,它是“bodyData”。
<?php
function getBody() {
if (isset($_POST['text'])) {
// normally I would htmlspecialchars() this variable to disallow HTML injection
echo $_POST['text'];
}
}
if (isset($_POST['ajax'])) {
getBody();
exit();
}
<html>
<head>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript">
$(function (){
$('#testbtn').click(function() {
$.post('',{text:'blablabla', 'ajax':1}, function(bodyData) {
document.body.innerHTML = bodyData;
});
});
});
</script>
</head>
<body>
<?php if (isset($_POST["text"])):
getBody();
else: ?>
<form action="" method="post" id="testform">
<input type="button" id="testbtn"/>
</form>
<?php endif ?>
</body>
</html>