通过AJAX获取POST数据

时间:2014-12-12 08:12:59

标签: javascript php ajax

我有一个表单将通过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。

3 个答案:

答案 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;
}

更多信息:

AJAX JQUERY

答案 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,直到您更好地处理它为止。