标准表单提交呈现页面,但是通过$ .post()将数据传递给服务器而不是呈现页面

时间:2014-03-22 12:42:42

标签: javascript php jquery

我的问题是这个代码是显示" blablabla"当我推送':

<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>

但是第二段代码即使在点击按钮后也会继续显示表格,并且没有显示&#34; blablabla&#34;:

<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'});
        });
    });
</script>
</head>
<body>
<?php if (isset($_POST["text"])):
    echo $_POST["text"];
else: ?>
    <form action="" method="post" id="testform">
        <input type="button" id="testbtn"/>
    </form>
<?php endif ?>
</body>
</html>

为什么?

2 个答案:

答案 0 :(得分:0)

逻辑,如果我们做一个ajax帖子,只需发送我们想要在正文中显示的内容,否则显示整个页面,就好像它是一个普通的表单提交。 ajax调用中的成功回调将用innerHTML替换body

<?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>

答案 1 :(得分:-1)

在帖子中提供页面网址

$.post(window.location, {tetx: 'blablabla'}, success: function(data) {
      alert('successful.the response from server is' + data);
    });