javascript
  • php
  • sql
  • ajax
  • 2017-08-08 104 views -2 likes 
    -2

    我有這段代碼,現在我想將這個$ _SESSION ['roll_id']變量發送到另一個頁面menu.php,其中寫入ajax函數。我如何發送這個變量到另一個Ajax頁面來設置數據。如何將數據從一個php頁面發送到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查詢中使用這個卷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頁面的全部代碼。

    +0

    什麼錯誤,你在上面的代碼中得到些什麼?在「menu.php」頁面中會話變量的內容是什麼? –

    +0

    VM374:2 Uncaught SyntaxError:意外的標記<位於JSON位置2 at JSON.parse() at Object.success(menu.php:20) at i(jquery.min。js:2) at XMLHttpRequest的A(jquery.min.js:4) 上的Object.fireWith [as resolveWith](jquery.min.js:2) 。 (jquery.min.js:4) –

    +0

    你可以直接用'submenu.php'調用會話。爲什麼通過ajax? – prasanth

    回答

    0

    嘗試這樣就可以了有助於您

    <?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 echo $session; ?>"; //change here 
    alert(rollid) 
    $.ajax 
    ({ 
        type:'post', 
        url:'submenu.php', 
        data:{roll_id:rollid}, // change alse here 
        /*success: function (data) { 
          alert(data); 
         }*/ 
    
    +0

    menu.php:8未捕獲的SyntaxError:無效或意外的標記 –

    +0

    當我嘗試此操作時引發此錯誤。 –

    +0

    '錯誤'似乎你的'會話變量'是'空'@AnjanaChoudhary – JYoThI

    0

    1:missedecho變量。

    第二:如果它不是一個array無需json_encode

    3:header功能,你不會echo出來放像htmlechoing的東西會造成Warning: Cannot modify header information - headers already sent所以採取有關保健任何browser

    4:嘗試把exit();功能後header功能

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

    JS:

    var rollid = '<?php echo $session; ?>'; 
    
    +0

    它也沒有工作。給出錯誤 –

    +0

    錯誤是什麼? @AnjanaChoudhary – JYoThI

    +0

    給出了上述問題。同樣的錯誤 –

    0

    您在成功登錄呼應<h2 ...然後用header功能重定向。這將導致一個警告`警告:不能修改標題信息 - 已經發送的標題「和重定向可能不起作用。

    至於AJAX,需要呼應roll_id這樣的:

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

    我也woudl想指出的是,由於rollid是一個值,你不真的需要json_encode它。

    +0

    刪除json_enocode功能,但仍然無法正常工作。 –

    +0

    您是否像'var rollid ='<?php echo($ session); ?>';'?另外,什麼不適合你?這個值在submenu.php上不可用?你可以在submenu.php中使用'$ session = $ _SESSION ['roll_id'];'來獲得它的值。 –

    +0

    var rollid ='<?php echo($ session); ?>';這是由我完成的。當我print_r($ session)它也給正確的價值。但我認爲這個價值並不是數據「滾動」。 –

    0

    只是start_session()在頁面的頂部,並嘗試這樣

    var rollid = "<?php echo $_SESSION['roll_id']; ?>"; 
    
    +0

    不能正常工作。 –

    +0

    so just print_r($ _ SESSION);首先檢查會話 –

    +0

    中的任何值存儲是否也在login.php文件中使用session_start();在文件頂部 –

    相關問題