Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 标准表单提交呈现页面,但通过$.post()将数据传递到服务器,而不是呈现页面_Javascript_Php_Jquery - Fatal编程技术网

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

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

我的问题是,当我按下“提交”按钮时,该代码显示为“blabla”:

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