1

要件に従って、フォームを送信するときにユーザーがセッションに書き込むことができるようにしたいのですが、ページをリロードせずに、これは私がこれまでに行ったことです。

Javascript関数:

$(function() {
$("#body").submit(function(){
var name = $("#player_name").val();
var dataString = 'player_name='+ name
alert (dataString);return false; 
   $.ajax({
      type: "POST",
      url: "session_update.php",
      data: dataString,
      success: function(){
        $('#body').html("<div id='message'></div>");  
        $('#message').html("<h2>Logged in!</h2>");
      });
   }
});
   return false;
});

送信しようとしている私のフォーム:

    <div class="body">
<div class="home" id="home" style="width:100%">
    <form action="" name="login">
    USERNAME: <input type="text" id="player_name" name="player_name"/>
          <br>
      <input type="submit" name="submit" class="button" id="submit_btn" value="Send" />
         </form>
<? echo "value=". $_SESSION['player_name'];?>
</div>

phpファイルはデータを次の宛先に送信します。

<?php
start_session();
$_SESSION['player_name']= $_POST["player_name"];
?>

どんなアドバイスでも大歓迎です。コーディングのこちら側にはかなり新しいので、それを引き起こしているのは明らかなことかもしれませんが、私はそれを見ることができません。

詳細については私に知らせてください。

アップデート

?player_name = User&send:75を表示しているコンソール

4

5 に答える 5

5

あなたは使用する必要はありsession_start();ませんstart_session()

ajaxでページを指すだけでなく、PHPスクリプトを手動でテストするようにしてください。そこに行き、それが機能することを確認してください。:-)

これをテストした場合(error_reportingがオンになっていると仮定)、未定義の関数を呼び出そうとしていることを示すエラーが表示されます。

アップデート

この問題に加えてsession_start()、コードに他の問題がある可能性があります。

最初のステップは、console.log('hello');またはを使用してデバッグすることalert('hello')です。これらのアクションをフォーム送信イベントにバインドすると、送信関数が呼び出されているかどうかがわかります。

これを実行したら、残りのデバッグを続行できます:-)

更新2

submitjQueryを見ると、DOMの間違った要素にイベントをアタッチしているように見えます。divではなく、フォームに添付する必要があります。そのようです:

$(function() {
    $("#form").submit(function(){
        var name = $("#player_name").val();
        var dataString = 'player_name='+ name
        $.ajax({
          type: "POST",
          url: "session_update.php",
          data: dataString,
          success: function(){
            $('#body').html("<div id='message'></div>");  
            $('#message').html("<h2>Logged in!</h2>");
          });
        }
    });
});

<div class="body">
    <div class="home" id="home" style="width:100%">
        <form id="form" action="" name="login">
            USERNAME:<input type="text" id="player_name" name="player_name"/><br>
            <input type="submit" name="submit" class="button" id="submit_btn" value="Send" />
        </form>
        <? echo "value=". $_SESSION['player_name'];?>
    </div>

brヒント:CSSを使用して要素の間隔を空け、タグは使用しないでください。ただ私の意見:-)

于 2012-11-02T11:46:23.827 に答える
1

間違った要素にイベントを添付しています。

jsの変更で

$("#body").submit(function(){

$("#myform").submit(function(){

HTMLで

<form action="" name="login">

<form id='myform' action="" name="login">

また、いくつかの構文エラーがあり、ここで修正されています。

$(function() {
$("#myform").submit(function(){
var name = $("#player_name").val();
var dataString = 'player_name='+ name;
alert (dataString);
   $.ajax({
      type: "POST",
      url: "session_update.php",
      data: {player_name: name},
      success: function(){
        $('body').append("<div id='message'></div>");  
        $('#message').html("<h2>Logged in!</h2>");
      }//here was )
   });
     return false;
});//  |
  //   \/return was here
});​

実例

主なヒント-開発コンソールを使用して(F12キーを押して)コードをデバッグします

于 2012-11-02T11:56:24.433 に答える
1
also remove return false from the middle of your code


$(function() {
$("#body").submit(function(){
var name = $("#player_name").val();

   $.ajax({
      type: "POST",
      url: "session_update.php",
      data: {player_name:name},
      success: function(){
        $('#body').html("<div id='message'></div>");  
        $('#message').html("<h2>Logged in!</h2>");
      });
   }
});
   return false;
});
于 2012-11-02T11:52:44.327 に答える
-1

フォームを送信したくない場合:

  1. のtype="submit"をsubmit_btntype="button"に変更します。
  2. session_update.phpページのAJAX呼び出しをsubmit_btnクリックイベントにバインドします。
于 2012-11-02T11:50:39.523 に答える
-1

これを試していただけますか。問題はクリックイベントにあると思います。

$(function() {

    $("#submit_btn").click(function(){
    var name = $("#player_name").val();
    var dataString = 'player_name='+ name
    alert (dataString);return false; 
           $.ajax({
              type: "POST",
              url: "session_update.php",
              data: dataString,
              success: function(){
                $('#body').html("<div id='message'></div>");  
                $('#message').html("<h2>Logged in!</h2>");
              });
           }
    });

});
于 2012-11-02T11:53:28.530 に答える