如何将值从xmlhttp.open()中指定的文件传递给PHP文件?

时间:2014-01-26 04:43:11

标签: php html ajax

我想将一些$ _SESSION变量从moduleinfo.php传递给managemodule.php。但是,我尝试传递的每个变量都没有传递给managemodule.php。

managemodule.php:

//Assume that database connect here

<form id="moduleform">
        <h2 class="fs-title">Module Info Update</h2>
        <p>Please select a module for more information:</p><br />
        <select id="modulelist" name="module" onchange="showModuleInfo(this.value)">
            <option>-- Select a module --</option>
            <?php include('modulelist.php'); ?>
        </select>
        <div id="moduleinfo"><br /><b><-- Module info will be listed here --></b></div>
<?php 
echo $_SESSION['code'];  //Just wanted to see if the value get passed
?>
    </form>

managemodule.js:

function showModuleInfo(str)
{
    if (str == "")
    {
        document.getElementById("moduleinfo").innerHTML = "";
        return;
    } 
    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
        {
            document.getElementById("moduleinfo").innerHTML = xmlhttp.responseText;
        }
    }

    xmlhttp.open("GET","moduleinfo.php?q="+str,true);
    xmlhttp.send();
}

moduleinfo.php:

//Assume that database connect here

session_start();

$q = $_GET['q'];
$result = mysql_query("SELECT * FROM module WHERE code = '".$q."'");

while($row = mysql_fetch_array($result))
{
    echo '<input type="text" name="update_moduleCode" placeholder="Module Code" value="'.$row['code'].'" required />';
    echo '<input type="text" name="update_moduleTitle" placeholder="Module Name" value="'.$row['name'].'" required />';
    echo '<textarea name="update_moduleDescription" rows="14" placeholder="Module Description" required>'.$row['description'].'</textarea><br />';
echo '<input type="submit" name="update" class="next action-button" value="Update" />'; 
    echo 'OR ';
    echo '<button name="delete" class="next action-button" value="Delete Module" onclick="deleteAlert()">'.'Delete Module'.'</button>';
    $_SESSION['code'] = $row['code']; //Trying to pass this value over to managemodule.php
}

谁能告诉我如何实现这一目标?另外,只是好奇,为什么我需要在moduleinfo.php中再次连接我的数据库,因为我已经在我的主文件managemodule.php中完成了这个?

1 个答案:

答案 0 :(得分:1)

您需要使用与{module} .php中相同的session_start();在managemodule.php中启动会话。当您在该文件中启动会话时,您在$_SESSION中保存的所有变量都将在那里可用。

如果您尚未包含已连接到数据库的文件。当我必须在多个PHP文件中使用数据库时,我通常会创建一个init.php文件,我将所有包含的文件放入其中。

例如: 的init.php

// include DB files
require_once('path/to/database.php');
$db = new Database();

// include user manager
require_once('/path/to/user.php');
$user = new UserManager();

// start session
session_start();

main.php

require_once('init.php');

// all of my code goes below here =)

_D