我已经研究了一段时间,我不确定我是否以正确的方式进行,因为我根据示例设置的每个表单都不能满足我的需要。
我需要设置一个表格,它将:
从下拉菜单中选择时设置会话
不重新加载/刷新页面(我读过使用 AJAX 解决了这个问题)
提交并停留在同一页面上(感到困惑,因为大多数 AJAX 示例将其发送到不同的 process.php 页面,该页面据称是“不可见的”但它不会“停留”在同一页面上,它会重定向。
基本上,客户选择 1 到 10 的数量。如果他们选择“2”......它不会重新加载页面......但它确实设置了会话 [数量] = 2。应该很简单......但是我是否发布到与表单相同的页面?或 POST 到不同的页面并以某种方式重定向?
另外,我做的一项测试是每次都将我的“回声会话[数量]”粘贴到页面下方,例如 7、2、3、5 等,而不是替换它。
下面的代码部分来自一个将性别作为下拉菜单的示例。我只想让下拉菜单保持选中状态,并在提交按钮旁边回显选择。这是出于测试目的,以便我了解发生了什么。一旦发生这种情况,我就可以完成表格的其余部分。它目前不会回显任何内容。
<? ob_start();?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?php session_start(); ?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Submit Form with out refreshing page Tutorial</title>
<!-- JavaScript -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
<script type="text/javascript" >
$(function() {
$(".submit").click(function() {
var gender = $("#gender").val();
var dataString = 'gender=' + gender;
if(gender=='')
{
$('.success').fadeOut(200).hide();
$('.error').fadeOut(200).show();
}
else
{
$.ajax({
type: "POST",
url: "join.php",
data: dataString,
success: function(){
$('.success').fadeIn(200).show();
$('.error').fadeOut(200).hide();
}
});
}
return false;
});
});
</script>
<style type="text/css">
body{
}
.error{
color:#d12f19;
font-size:12px;
}
.success{
color:#006600;
font-size:12px;
}
</style>
</head>
<body id="public">
<div style="height:30px"></div>
<div id="container">
<div style="height:30px"></div>
<form method="post" name="form">
<select id="gender" name="gender">
<option value="">Gender</option>
<option value="male">Male</option>
<option value="female">Female</option>
</select>
<div>
<input type="submit" value="Submit" class="submit"/>
<span class="error" style="display:none"> Please Enter Valid Data</span>
<span class="success" style="display:none"> Your gender is <?php echo $_SESSION['gender'];?></span>
</div>
</form>
<div style="height:20px"></div>
</div><!--container-->
</body>
</html>
<? ob_flush(); ?>
这是我的 POST 页面,名为 join.php (在示例中调用它,所以我现在就使用它)
<?php
session_start();
if($_POST)
{
$gender = $_POST['gender'];
$_SESSION['gender'] = $gender;
}
else
{ }
?>