2016-10-03 8 views
1

フォームのボタンをクリックすると、セッション配列に値を追加します。私はこれをjquery onclick、ajax、jqueryを使って実現しようとしました。しかし、それは変数を設定したり、何かを返すようには見えません。私のmain.phpでjqueryとphpを使用してセッションajaxを設定できません

私は

<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)を試します。エコーの代わりに私はちょうど "Array()"を取得

+0

(ISSET($場合 '追加! _SESSION ['name']))){$ _SESSION ['name'] = []; } '$ _SESSION ['name'] [] = $ _POST ['name'];' –

+1

'session_start();'は、コンテンツが出力に書き込まれる前に使用されなければなりません。 'name ']'は 'echo $ _SESSION [' name '];'が間違っていて、' name 'キーが設定されているかどうかを前に確認する必要があります –

答えて

0

あなたは本当に必要はありませんformあなたはajaxで送信されます。
submitは予約語で、idclassnameとして使用しないでください。
それは

があなたの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

現在、フィールドに新しい名前を入力して送信すると、上書きされます。その配列と配列は1つだけです([name] => dwdwdwd)。しかし、私はしたい配列([name1] => dwdwdwd、[name2] => jdjdjdwd、) –

関連する問題