Перезагрузить форму при выполнении функции jquery

Я хочу передать входное значение переменной сеанса php. С помощью приведенного ниже кода я могу отправить входное значение в сеанс, но оно отображается только в окне предупреждения или если я обновляю страницу, чего мне не нужно. Я добавил строку $ ("# form1") [0] .reset ();, чтобы обновить форму и, таким образом, распечатать значение сеанса на экране, но оно не работает.

index.php:

<?php
    @session_start();
    error_reporting(0);
    ?>
  <!doctype html>
  <html>

  <head>
    <meta charset = "utf-8">
    <title>input value to php session</title>
    <script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  </head>

  <body>
    <form method = "post" id = "form1">
      <input type = "text" name = "field1" id = "field1" onblur = "run(this)">
    </form>
    <br /><br />
    <?php echo $_SESSION['field1'];?>
    <script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script language = "javascript">
      function run(sel) {
        var text = $("#field1").val();
        if (text != "") {
          $.ajax({
            type: "POST",
            url: "input.php",
            data: {
              field1: text
            }
          }); //.done(function() {alert(text)});    
        }

        if (done.(function() {
            $("#form1").reset()
          }));
      }
    </script>
  </body>

  </html>

Файл input.php:

<?php
  @session_start();
  error_reporting(0);

  if (isset($_POST["field1"])){
    $_SESSION['field1'] = $_POST["field1"]; 
  }
?>

Я не могу следить за тем, что вы здесь пытаетесь сделать. Не имеет смысла. 1) Нет возвращаемых данных из input.php, 2) Нет данных сеанса в поле формы, 3) Сброс формы просто сбрасывает поля формы обратно к их начальным значениям. 4) Что не так с обратным вызовом success: для .ajax?

IncredibleHat 13.03.2018 14:38

Неправильный синтаксис if (done.(function() { $("#form1").reset() }));, закомментированный код должен работать, если вы сбросите form там. Об этом читайте в документы

Mosh Feu 13.03.2018 14:40
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
1 621
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы можете создать <div> вокруг своего значения и изменить его, когда .done():

Чтобы получить значение сеанса, вы должны использовать его в echo и использовать его в обратном вызове done():

<?php
@session_start();
error_reporting(0);
?>
<!doctype html>
<html>
<head>
<meta charset = "utf-8">
<title>input value to php session</title>
</head>
<body>
<form method = "post" id = "form1">
<input type = "text" name = "field1" id = "field1" onblur = "run(this)">
</form>
<br /><br />

<!-- HERE wrap into a div with an ID -->
<div id = "session-field"><?php echo $_SESSION['field1'];?></div>


<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script language = "javascript">
function run(sel) {
    var text = $("#field1").val();
    if (text != "") {
        $.ajax({
            type: "POST",
            url: "input.php",
            data: { field1: text}
        })
        // done callback using data (wha
        .done(function(data) {
            $('#session-field').html(data);
            $("#field1")[0].form.reset();
        });
    }
}
</script>
</body>
</html>

И ваш input.php:

<?php
@session_start();
error_reporting(0);

if (isset($_POST["field1"])){
   $_SESSION['field1'] = $_POST["field1"];
   echo $_SESSION['field1'] ; // echo outputs
}
?>

Арг. РЖУ НЕ МОГУ. Обыграй меня = D

IncredibleHat 13.03.2018 14:46

Если вы пытаетесь просто отобразить значение, которое только что было отправлено в PHP, вы можете сделать это двумя способами.

Во-первых, вы можете просто вставить на страницу с помощью JS

function run(sel) {
        var text = $("#field1").val();
        $('#some_div').append(text);
        if (text != "") {
          $.ajax({
            type: "POST",
            url: "input.php",
            data: {
              field1: text
            }
          }); 
        }

Или, если вы хотите быть уверены, что он был сохранен как переменная SESSION, вы можете вернуть его из PHP, а затем поместить на страницу с помощью JS.

<?php
  @session_start();
  error_reporting(0);

  if (isset($_POST["field1"])){
    $_SESSION['field1'] = $_POST["field1"]; 
    echo $_SESSION['field1'];
  }

?>

а затем в вашем JS

function run(sel) {
       var text = $("#field1").val();
       $('#some_div').append(text);
       if (text != "") {
         $.ajax({
            type: "POST",
            url: "input.php",
            data: {
              field1: text
            },
            success: function(data) {
                $('#some_div').append(data);
            }
          }); 
        }

Просто добавьте div в свой HTML с id output-session, а затем распечатайте $ _POST ["field1"] в input.php, чтобы он был добавлен к этому div.

index.php

<script language = "javascript">
function run(sel) {
var text = $("#field1").val();
if (text != "") {
    $.ajax({
        type: "POST",
        url: "input.php",
        data: { field1: text},
        success: function(msg){

          if (msg != ''){                
          $("#output-session").html(msg);
          }        
        }
    });
}
</script>
<div id = "output-session"></div>

input.php

<?php
@session_start();
error_reporting(0);

if (isset($_POST["field1"])){
$_SESSION['field1'] = $_POST["field1"]; 
print $_POST["field1"];
}
?>

Другие вопросы по теме