Javascript:允许用户在提交表单时写入会话但不重新加载页面

时间:2012-11-02 11:43:28

标签: php javascript jquery html ajax

根据要求,我希望允许用户在提交表单时写入会话但不重新加载页面,这是我到目前为止所做的:

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 =使用者&安培;发送:75

5 个答案:

答案 0 :(得分:5)

您需要使用session_start();而不是start_session()

始终确保手动测试PHP脚本,而不仅仅是指向带有ajax的页面。转到它并确保它的工作原理。 : - )

如果您对此进行了测试(假设启用了error_reporting),您将收到一条错误消息,指出您正在尝试调用未定义的函数。

<强>更新

session_start()问题外,您的代码中可能还有其他问题。

第一步是使用console.log('hello');alert('hello')进行调试。将这些操作绑定到表单提交事件,这将告诉您是否正在调用提交函数。

完成此操作后,您可以继续调试其余部分: - )

更新2

通过查看您的jQuery,您似乎将submit事件附加到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>

提示:使用CSS来元素空间,不要使用br标记。只是我的意见: - )

答案 1 :(得分: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;
});

答案 2 :(得分:1)

您将事件附加到不正确的元素。

在js改变

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

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

in 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
});​

working example

主要提示 - 使用开发控制台(按F12)调试代码

答案 3 :(得分:-1)

如果您不想提交表单:

  1. submit_btn的type =“submit”更改为type =“button”。
  2. session_update.php页面的AJAX调用绑定到submit_btn点击事件。

答案 4 :(得分:-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>");
              });
           }
    });

});