ugrás a tartalomhoz

form - ajax

thelol · 2010. Szep. 18. (Szo), 11.12
Sziasztok!

Egy olyan problémám lenne, hogy van egy oldalam, aminek a link kezelését ajaxal csináltatatom. Most a formokat is szeretném ajaxal kezeltetni. Gond ott kezdődik, hogy két fajta formot használok. Egy ami az admin oldal bejelentkezését kezeli, a másik pedig a #tartalom divbe behívott egyéb formok. Olyan megoldást szeretnék, hogy selector-tól függően hajtódjon végre az ajax script. Próbáltam kutatni a neten, de eddig nem sikerült működő megoldást találni...
A honlap felépítése nagyvonalakban:
<body>
<div id='admin'></div>
<div class='loading'></div>
<div id='tartalom'></div>
</body>
  1. (function($){  
  2. ...    
  3.   $.fn.submitForm=function(){  
  4.     $("#tartalom").delegate("form""submit"function(){  
  5.       if(check() == false){  
  6.         return false;  
  7.       }  
  8.       var link=$(this).attr("action");  
  9.       var method=$(this).attr("method");  
  10.       method=(method)?method:"POST";  
  11.       $.ajax({  
  12.         type:method,  
  13.         url:link,  
  14.         data:$(this).serialize(),  
  15.         beforeSend: function(html){  
  16.           $("#tartalom").fadeOut("slow"function(){  
  17.             $("#tartalom").fadeIn("slow").html(html);  
  18.           });  
  19.         },  
  20.         success:function(html){  
  21.           $("#tartalom").html(html);  
  22.           $("form").submitForm();  
  23.         },  
  24.         error:function(XMLHttpRequest,textStatus,errorThrown){  
  25.           $("#tartalom").load("lib/error.php");  
  26.           return false;  
  27.         },  
  28.         complete: function(d,s){  
  29.           $(".loading").fadeOut("slow"function(){  
  30.             $(".loading").css("display","none");  
  31.           });  
  32.         }  
  33.       });  
  34.       return false;  
  35.     });  
  36.   
  37.     $("#admin").delegate("form""submit"function(){  
  38.       alert("Próba");  
  39.       var link=$(this).attr("action");  
  40.       var method=$(this).attr("method");  
  41.       method=(method)?method:"POST";  
  42.       $.ajax({  
  43.         type:method,  
  44.         url:link,  
  45.         data:$(this).serialize(),  
  46.         success:function(html){  
  47.           $("#admin").html(html);  
  48.           $("form").submitForm();  
  49.         },  
  50.         error:function(XMLHttpRequest,textStatus,errorThrown){  
  51.           $("#tartalom").load("lib/error.php");  
  52.           return false;  
  53.         }  
  54.       });  
  55.       return false;  
  56.     });  
  57.   }    
  58. })(jQuery);  
  59.   
  60. function show_admin(link){  
  61.   $.ajax({  
  62.     type: "GET",  
  63.     url: link,  
  64.     data: "",  
  65.     success: function(html){  
  66.       $("#admin").fadeOut("slow"function(){  
  67.         $("#admin").fadeIn("slow").html(html);  
  68.       });  
  69.     },  
  70.     error: function(XMLHttpRequest,textStatus,errorThrown){  
  71.       $("#admin").fadeOut("slow"function(){  
  72.         $("#admin").fadeIn("slow").load("lib/error.php");  
  73.       });  
  74.     }  
  75.   });  
  76. }  
  77.   
  78. function show(link){  
  79.   $.ajax({  
  80.     type: "GET",  
  81.     url: link,  
  82.     data: "",  
  83.     beforeSend: function(d,s){  
  84.       $(".loading").fadeIn("slow"function(){  
  85.         $(".loading").css("display","block");  
  86.       });  
  87.     },  
  88.     success: function(html){  
  89.       $("#tartalom").fadeOut("slow"function(){  
  90.         $("#tartalom").fadeIn("slow").html(html);  
  91.       });  
  92.     },  
  93.     error: function(XMLHttpRequest,textStatus,errorThrown){  
  94.       $("#tartalom").fadeOut("slow"function(){  
  95.         $("#tartalom").fadeIn("slow").load("lib/error.php");  
  96.       });  
  97.     },  
  98.     complete: function(d,s){  
  99.       $(".loading").fadeOut("slow"function(){  
  100.         $(".loading").css("display","none");  
  101.       });  
  102.     }  
  103.   });  
  104. }  
  105.   
  106. $(document).ready(function(){  
  107. ...  
  108.   $("form").submitForm();  
  109.   show_admin("admin/admin.php");  
  110.   show("pages/page.php?page=nagyterem");  
  111. ...  
  112. });  
 
1

Meg van a gond, csak nem

thelol · 2010. Szep. 18. (Szo), 11.22
Meg van a gond, csak nem értem...

a bejelentkezési adatokat, $_SESSION ba tárolom... ez létre is, jön, a böngésző látja... sőt, a létrejötte pillanatában kiíratom, akkor meg is jelenik. De a behívott php oldalak már nem kapják meg... Mi lehet a gond?
2

session_start

Poetro · 2010. Szep. 18. (Szo), 11.55
A PHP fájlok elején van session_start()? Minden fájl elején, amit az alkalmazás a böngészőből közvetlenül el tud érni, jó lenne ha szerepelne a session_start() különben előfordulhat, hogy megszakad a munkamenet.
3

Így néz ki az

thelol · 2010. Szep. 18. (Szo), 12.00
Így néz ki az admin.php:
  1. <?php  
  2. session_start();  
  3. require_once("../lib/init.php");  
  4. if(isset($_GET['act'])){  
  5.     if($_GET['act'] == 'logout'){  
  6.         unset($_SESSION['loggedin']);  
  7.         unset($_SESSION['u_id']);  
  8.         unset($_SESSION['user']);  
  9.         unset($_SESSION['u_lvl']);  
  10.         session_destroy();  
  11.     }elseif($_GET['act'] == "login"){  
  12.         $engine->author();  
  13.     }  
  14. }  
  15. $engine->loginform();  
  16.   
  17. ?>  
illetve az engine.class.php ami tartalmazza a belépéseket:
  1. ...  
  2.     function loginform(){  
  3.         global $session$config;  
  4.         if(!$session->loggedin()){  
  5.             echo "            <form action='../admin/admin.php?act=login' method='POST'>  
  6.                <div class='admin'>Felhasználó:</div>  
  7.                <div class='admin_input'><input class='admin' type='text' name='user'></div>  
  8.                <div class='admin'>Jelszó:</div>  
  9.                <div class='admin_input'><input class='admin' type='password' name='pass'></div><br>  
  10.                <div class='admin_button'><input type='submit' class='belep' name='login' id='login' value='Belépés'></div>  
  11.                <div class='admin_admin_reg'><a class='menu' name='members' id='nrew_user' href='admin/members.php?page=admin&todo=new_user' target='main'>Regisztráció</a></div>  
  12.             </form>\n";  
  13.         }else{  
  14.             if($_SESSION['u_lvl'] == "1"){  
  15.                 echo "            <div class='admin'><a class='menu' href='admin/members.php?page=admin&todo=new_passwd'&id=".$_SESSION['u_id'].">Új jelszó</a></div>  
  16.             <div class='admin'><a class='menu' href='admin/members.php?page=admin&todo=new_user'>Új felhasználó</a></div>  
  17.             <div class='admin'><a class='menu' href='admin/members.php?page=admin&todo=users'>Felhasználók</a></div>  
  18.             <div class='admin'><a class='menu' href='admin/tartalom.php?page=admin'>Tartalom</a></div>  
  19.             <div class='admin'><a class='menu' href='admin/csarnok_admin.php?page=admin'>Rendelések</a></div>  
  20.             <div class='admin'><a class='menu' href='admin/linkek_admin.php?page=admin'>Link hozzáadás</a></div>  
  21.             <div class='admin'><a class='menu' href='admin/kosar.php?page=admin'>Kosár</a></div><br>  
  22.             <div class='admin_logout'><input type='button' style='width:45px;' class='belep' name='login' id='login' value='Kilépés' onclick='logout();'></div>\n";  
  23.             }  
  24.         }  
  25.     }  
4

Megtaláltam a hibát. :)

thelol · 2010. Szep. 18. (Szo), 16.53
Megtaláltam a hibát. :) átírtam a bejelentkezést végző classot, hogy ne ő kezelje a form által küldött adatokat, hanem az admin.php, és ő adja tovább $engine->author($.user, $pass); és már működik is :) Pussz ahogy javasoltad, minden oldal az init.php-vel kezd, így abba benyomtam a session_start()-ot. :) Ismét nagyon köszönöm a segítséget. :)