Стандартная форма отправки страницы рендеринга, но передача данных на сервер с помощью $ .post (), а не страницы рендеринга

0

Моя проблема в том, что этот код отображается "blablabla", когда я нажимаю "submit":

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

но этот второй код продолжает отображать форму даже после нажатия на кнопку и не показывает "blablabla":

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

Зачем?

  • 1
    $ .post () не перезагружает текущую страницу и, поскольку вы не переписываете тело с результатом записи, ничего не меняется.
  • 0
    Как я могу перезагрузить текущую страницу после публикации данных на сервере с помощью PHP или JavaScript?
Показать ещё 2 комментария
Теги:

2 ответа

0
Лучший ответ

Логика, если мы сделаем сообщение ajax, просто отправьте содержимое, которое мы хотим показать внутри тела, иначе покажите всю страницу, как если бы это была обычная форма submit. Обратный вызов успеха внутри вызова 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>
  • 0
    Спасибо! Я не думал о переменной данных для успешной пост-функции! =) В вашем примере это «bodyData».
-2

указать URL страницы в сообщении

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню