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()

始终确保您手动测试 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标签。只是我的观点 :-)

于 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 回答