2016-10-03 2 views
1

Я хочу добавить значение в массив сеансов, когда когда-либо нажимаю кнопку в моей форме. Я пытался добиться этого, используя jquery onclick, ajax и jquery. но он, кажется, не устанавливает переменную или ничего не возвращает.Невозможно установить сеанс ajax с помощью jquery и php

в моем main.php я есть

<form id="sessy"> 
    <input type="text" name="name" id="name"> 
    <button id="submit" name="submit" class="btn btn-success">Submit</button> 
</form> 

<script> 
    $("#sessy").submit(function(){ 
     $.ajax({ 
      type: "POST", 
      url: "session.php", 
      data: $(this).serialize(), 
      success: function(){ 
       // Do what you want to do when the session has been updated 
      } 
     }); 

     return false; 
    }); 
</script> 

<?php 
session_start(); 
echo $_SESSION['name']; 

?> 

и в моем session.php

<?php 
session_start(); 

$_SESSION['name'][] = $_POST['name']; 
?> 

и я звоню jquery.js в нижней части страницы.

это дает мне ниже, где строка 23 является частью, где я пытаюсь повторить переменную сеанса.

Notice: Undefined index: name in ....main.php on line 23 

и я попробую print_r ($ _ SESSION); вместо echo я получаю только «Array()»

+0

добавить 'если (Исеть ($ _SESSION ['name'])) {$ _SESSION ['name'] = []; } 'before' $ _SESSION ['name'] [] = $ _POST ['name']; ' –

+1

' session_start(); 'должен использоваться до того, как любой контент будет передан на выход, результат не будет показан после submit, потому что страница не перезагружается, а '$ _SESSION ['name']' является массивом, поэтому 'echo $ _SESSION ['name'];' неверно, и вы должны проверить до того, как установлено значение 'name' –

ответ

0

Вам не нужен form, вы отправляете его с помощью ajax.
И submit - зарезервированное ключевое слово, которое вы не должны использовать в качестве id, class или name.
Она имеет тенденцию к ошибке ...

Попробуйте это в качестве main.php:

<?php 
session_start(); 
?> 
<html> 
<head> 
<!-- jQuery --> 
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> 
</head> 
<body> 
<div id="sessy"> 
    <input type="text" name="name" id="name"> 
    <button class="btn btn-success">Submit</button> 
</div> 
<br> 
<div id="result"></div> 
<script> 
    $("#sessy .btn").click(function(){ 
     $.ajax({ 
      type: "POST", 
      url: "session.php", 
      data: $("#sessy #name"), 
      success: function(data){ 
       // Do what you want to do when the session has been updated 
       $("#result").html("<h2>Name «"+data+"» is in session.</h2>"); 
      } 
     }); 
    }); 
</script> 
</body> 
</html> 

И ваш session.php:

<?php 
session_start(); 

$_SESSION['name'] = $_POST['name']; 
echo $_SESSION['name']; 
?> 
+0

, это добавляет сеанс и эхо их. Я хочу, чтобы значения добавлялись к массиву. как я могу изменить это, чтобы сделать это? –

+1

Он устанавливает $ _SESSION, который является массивом, с ключом 'name' = введенным значением, отправленным через ajax. Этот массив сеансов уникален для этого пользователя. Я не понимаю, что вы действительно хотите здесь сделать. Создать массив из многих имен? –

+0

В настоящее время, когда я ввожу новое имя в поле и отправляю его, он перезаписывается. таким образом его и массив только одного массива ([name] => dwdwdwd). но я хочу, например, Array ([name1] => dwdwdwd, [name2] => jdjdjdwd,) –

Смежные вопросы