我有一个表单将通过AJAX来设置会话变量并返回到原始页面。
我的问题是我无法设置会话变量,因此它无法正常工作。
我的主要PHP页面
<?php
if ($_SESSION['adminFunction'] == 'adminfunction'){
echo "<form id='userOptionRequest' action='request.php'>";
echo "<button name='adminFuncUserOption' onclick='adminFuncOption(1)'>User Option</button> <br /> <br />";
echo "<button name='adminFuncUserOption' onclick='adminFuncOption(2)'>Subject Option</button> <br /> <br />";
echo "<button name='adminFuncUserOption' onclick='adminFuncOption(3)'>Test Option</button> <br /> <br />";
echo "</form>";
}
if ($_SESSION['adminFunction'] == 'addusers'){
echo "hello world";
}
?>
我的JS档案
function adminFuncOption(option){
if (option == 1){
var userOptionRequest = new XMLHttpRequest();
userOptionRequest.open('POST','request.php',false);
xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
userOptionRequest.send('adminFuncUserOption=' + option);
return(1);
} }
request.php
<?php
session_start();
$option = $_POST['option'];
if ($option != NULL){
if ($option == 1){
$_SESSION['adminFunction'] = 'addusers';
header('Location: http://rsc_naga_isd/admin');
}
}
var_dump($_POST);
var_dump($_SESSION);
var_dump($_GET);
&GT;
当我回到我的主要PHP页面时,会话现在应该是addusers并且应该显示'hello world'
我有研究但仍然很难理解AJAX或PHP Submitting HTML form using Jquery AJAX http://www.ajax-tutor.com/post-data-server.html http://tutorialzine.com/2009/09/simple-ajax-website-jquery/
哦,我仍然不熟悉jquery并且仍然是javascript的新手,但在潜入jquery之前更喜欢使用javascript。
答案 0 :(得分:1)
你好jquery可以帮助你用更少的资源做更多事情,例如使用jquery的AJAX调用是这样的:
$.ajax({
url: url,
type: 'POST',
data: data,
beforeSend: funtion(){
//DO Something before send like print a Loading text
},
success: function(data){
//DO SOMETHING IF DATA IS RETURNED
},
error: function(data){
//DO SOMETHING ON ERROR
}
});
然后,您可以检查php scipt以获取数据发送的值,例如:
如果您发送此数据值:
data: {"adminFunction" : "mortal user not worthy" }
你的PHP脚本上的就是这样做的:
switch($_POST['adminFunction'])
{
case 'superAdmin':
//....
break;
default:
//DO Something
break;
}
更多信息:
答案 1 :(得分:0)
在javascript中发送:
userOptionRequest.send('adminFuncUserOption=' + option);
但是在php:
$option = $_POST['option'];
应该是
$option = $_POST['adminFuncUserOption'];
我知道你想要javascript,但jquery更容易;)
$.post("request.php", { adminFuncUserOption: option }, function(response) {
console.log(response);
});
然后只检查$_POST['adminFuncUserOption']
答案 2 :(得分:0)
代码的服务器端(PHP)在代码的javascript端之前执行。服务器为客户端浏览器创建HTML(使用javascript)。然后客户端浏览器执行代码和javascript。
在更新Session变量时,已经创建了请求页面。您将需要重新加载发出请求的页面,以便识别对会话变量的更改。
您可以让AJAX传回您可以使用javascript处理的非敏感数据。如果这是您不想被黑客攻击的安全信息,那么我建议您避免使用AJAX,直到您更好地处理它为止。