如何将数据从php页面发送到ajax页面

时间:2017-08-08 04:56:43

标签: javascript php sql ajax

我有这段代码,现在我想把这个$ _SESSION ['roll_id']变量发送到另一个页面menu.php,其中写有ajax函数。我如何将此变量发送到设置数据的另一个ajax页面。

这是login.php页面。

if($row["Login_Id"]==$username and $row["Login_Pass"]==$password)
{
echo "<h2 align='center'>" ."Login Sucessfull welcome" ." " .$row["Login_Id"] 
."</h2>" ;
$_SESSION['roll_id']=$row['Roll_Id'];
//echo "ID" .$_SESSION['roll_id']; (give roll id)
header("Location: menu.php");
}
else
{
    echo "<h2 align='center'>" ."Login Failed" ."</h2>";
}

这是menu.php页面,其中编写了整个功能。我想从这个页面发送rollid到submenu.php,我可以在sql查询中使用这个roll id。

<?php 
session_start();
$session = $_SESSION['roll_id'];
?>
<html>
<head>
<link href="menu_style.css" type="text/css" rel="stylesheet"/>
<script 
src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js">
</script>
<script type="text/javascript">
$(document).ready(function(){

var rollid = '<?php json_encode($session); ?>';
$.ajax
({
    type:'post',
    url:'submenu.php',
    data:{"roll_id":rollid},
    success:function(response)
    {
        //console.log(response);
        var menuArray= JSON.parse(response);
        var html =""; 
        $.each( menuArray, function( key, value )
        {
            html += "<li><a href=''>" + value.Menu_Name + "</a>";   
            if(value.subMenu.length > 0)
            {

                console.log(JSON.stringify(value.subMenu));
                html += "<ul>";
                $.each( value.subMenu, function( key, subValue )
                {
                html += "<li><a href=''>" + subValue.text + "</a></li>";     
                });
                html += "</ul>";

            }  

            html += "</li>";
        });
        console.log(html);
        if(response!="")
        {
            $("#main_menu").html(html);
        }
    }
});

});

这是submenu.php页面

<?php 
 session_start();
 include('config.php');
 $roll_id = $_POST['roll_id'];

 $q="select a.Roll_Id, a.Menu_Id, b.Menu_Name, b.Menu_URL,b.Menu_Level, 
 b.MainMenu_ID, b.Menu_Order, b.Account_id,b.is_deleted from roll_menu AS a 
 join menu AS b on a.Menu_Id=b.Menu_Id and a.Roll_Id=".$roll_id;
 $menu = mysqli_query($conn, $q);
 $mainMenu = array(); 
 foreach($menu as $x=>$value)
 {
  if($value['MainMenu_ID']==0)
  $mainMenu[]=$value;
 }
 $menuData= array();
 foreach($mainMenu as $y=>$value1)
 {  
 $subMenu= array();
 $m=$mainMenu[$y]['Menu_Id'];
 $q1="select a.Roll_Id, a.Menu_Id, b.Menu_Name, b.Menu_URL,
    b.Menu_Level, b.MainMenu_ID, b.Menu_Order, b.Account_id, 
    b.is_deleted from roll_menu AS a join menu AS b on
    a.Menu_Id=b.Menu_Id and a.Roll_Id=".$roll_id."and b.MainMenu_ID=$m"; 
 $menu1 = mysqli_query($conn, $q1);
 while($row=mysqli_fetch_array($menu1))
 {
    if($row["MainMenu_ID"]==$m)
    {
        $subMenu[]=array("text"=>$row["Menu_Name"]);
    }
 }  
 $value1["subMenu"] = $subMenu;
 $menuData[] = $value1;
 }
 $menuDataJSON = json_encode($menuData);
 echo $menuDataJSON;

现在我附上了submenu.php页面的完整代码。

4 个答案:

答案 0 :(得分:0)

尝试这样可能对你有帮助

    def print_file_dir(file)
        logo = File.open(Dir.getwd + file, 'r');
        logo.each_line do |line|
            puts line
        end
        logo.close
        puts
    end

答案 1 :(得分:0)

第一次:您<?php $img = imagecreatefrompng("imagetest.png"); $textcolor = imagecolorallocate($img,205,205,205); $number = "Your IP is {$_SERVER[REMOTE_ADDR]}"; //Also note the interpolation here. Not neccesary but it is nicer imagestring($img,10,5,5,$number,$textcolor); header("Content-type: image/jpeg"); imagejpeg($img); imagedestroy($img); missed变量。

第二名:如果不是echo则不需要array

第3名:在json_encode功能之前,您不会header任何echo输出,如browserhtml会导致echoing所以要小心。

第4次:尝试在Warning: Cannot modify header information - headers already sent函数

之后放置exit();函数
header

Js:

  header(....);
  exit();

答案 2 :(得分:0)

您在成功登录时回显<h2 ...,然后使用header功能重定向。这将导致警告“警告:无法修改标头信息 - 已经发送的标头”和重定向可能不起作用。

对于AJAX,你需要像这样回显roll_id:

var rollid = '<?php echo json_encode($session); ?>';

我也想指出,因为rollid是单个值,所以你真的不需要json_encode它。

答案 3 :(得分:0)

只需var rollid = "<?php echo $_SESSION['roll_id']; ?>"; 页首,然后尝试这样

.xlsx