根据要求,我希望允许用户在提交表单时写入会话但不重新加载页面,这是我到目前为止所做的:
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
答案 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
});
主要提示 - 使用开发控制台(按F12)调试代码
答案 3 :(得分:-1)
如果您不想提交表单:
submit_btn
的type =“submit”更改为type =“button”。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>");
});
}
});
});