Я хочу передать входное значение переменной сеанса 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"];
}
?>
Неправильный синтаксис if (done.(function() { $("#form1").reset() }));, закомментированный код должен работать, если вы сбросите form там. Об этом читайте в документы



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете создать <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
Если вы пытаетесь просто отобразить значение, которое только что было отправлено в 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"];
}
?>
Я не могу следить за тем, что вы здесь пытаетесь сделать. Не имеет смысла. 1) Нет возвращаемых данных из input.php, 2) Нет данных сеанса в поле формы, 3) Сброс формы просто сбрасывает поля формы обратно к их начальным значениям. 4) Что не так с обратным вызовом
success:для.ajax?