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>

(function($){
...  
  $.fn.submitForm=function(){
    $("#tartalom").delegate("form", "submit", function(){
      if(check() == false){
        return false;
      }
      var link=$(this).attr("action");
      var method=$(this).attr("method");
      method=(method)?method:"POST";
      $.ajax({
        type:method,
        url:link,
        data:$(this).serialize(),
        beforeSend: function(html){
          $("#tartalom").fadeOut("slow", function(){
            $("#tartalom").fadeIn("slow").html(html);
          });
        },
        success:function(html){
          $("#tartalom").html(html);
          $("form").submitForm();
        },
        error:function(XMLHttpRequest,textStatus,errorThrown){
          $("#tartalom").load("lib/error.php");
          return false;
        },
        complete: function(d,s){
          $(".loading").fadeOut("slow", function(){
            $(".loading").css("display","none");
          });
        }
      });
      return false;
    });

    $("#admin").delegate("form", "submit", function(){
      alert("Próba");
      var link=$(this).attr("action");
      var method=$(this).attr("method");
      method=(method)?method:"POST";
      $.ajax({
        type:method,
        url:link,
        data:$(this).serialize(),
        success:function(html){
          $("#admin").html(html);
          $("form").submitForm();
        },
        error:function(XMLHttpRequest,textStatus,errorThrown){
          $("#tartalom").load("lib/error.php");
          return false;
        }
      });
      return false;
    });
  }  
})(jQuery);

function show_admin(link){
  $.ajax({
    type: "GET",
    url: link,
    data: "",
    success: function(html){
      $("#admin").fadeOut("slow", function(){
        $("#admin").fadeIn("slow").html(html);
      });
    },
    error: function(XMLHttpRequest,textStatus,errorThrown){
      $("#admin").fadeOut("slow", function(){
        $("#admin").fadeIn("slow").load("lib/error.php");
      });
    }
  });
}

function show(link){
  $.ajax({
    type: "GET",
    url: link,
    data: "",
    beforeSend: function(d,s){
      $(".loading").fadeIn("slow", function(){
        $(".loading").css("display","block");
      });
    },
    success: function(html){
      $("#tartalom").fadeOut("slow", function(){
        $("#tartalom").fadeIn("slow").html(html);
      });
    },
    error: function(XMLHttpRequest,textStatus,errorThrown){
      $("#tartalom").fadeOut("slow", function(){
        $("#tartalom").fadeIn("slow").load("lib/error.php");
      });
    },
    complete: function(d,s){
      $(".loading").fadeOut("slow", function(){
        $(".loading").css("display","none");
      });
    }
  });
}

$(document).ready(function(){
...
  $("form").submitForm();
  show_admin("admin/admin.php");
  show("pages/page.php?page=nagyterem");
...
});
 
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:

<?php
session_start();
require_once("../lib/init.php");
if(isset($_GET['act'])){
	if($_GET['act'] == 'logout'){
		unset($_SESSION['loggedin']);
		unset($_SESSION['u_id']);
		unset($_SESSION['user']);
		unset($_SESSION['u_lvl']);
		session_destroy();
	}elseif($_GET['act'] == "login"){
		$engine->author();
	}
}
$engine->loginform();

?>
illetve az engine.class.php ami tartalmazza a belépéseket:

...
	function loginform(){
		global $session, $config;
		if(!$session->loggedin()){
			echo "            <form action='../admin/admin.php?act=login' method='POST'>
               <div class='admin'>Felhasználó:</div>
               <div class='admin_input'><input class='admin' type='text' name='user'></div>
               <div class='admin'>Jelszó:</div>
               <div class='admin_input'><input class='admin' type='password' name='pass'></div><br>
               <div class='admin_button'><input type='submit' class='belep' name='login' id='login' value='Belépés'></div>
               <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>
            </form>\n";
		}else{
			if($_SESSION['u_lvl'] == "1"){
				echo "            <div class='admin'><a class='menu' href='admin/members.php?page=admin&todo=new_passwd'&id=".$_SESSION['u_id'].">Új jelszó</a></div>
            <div class='admin'><a class='menu' href='admin/members.php?page=admin&todo=new_user'>Új felhasználó</a></div>
            <div class='admin'><a class='menu' href='admin/members.php?page=admin&todo=users'>Felhasználók</a></div>
            <div class='admin'><a class='menu' href='admin/tartalom.php?page=admin'>Tartalom</a></div>
            <div class='admin'><a class='menu' href='admin/csarnok_admin.php?page=admin'>Rendelések</a></div>
            <div class='admin'><a class='menu' href='admin/linkek_admin.php?page=admin'>Link hozzáadás</a></div>
            <div class='admin'><a class='menu' href='admin/kosar.php?page=admin'>Kosár</a></div><br>
            <div class='admin_logout'><input type='button' style='width:45px;' class='belep' name='login' id='login' value='Kilépés' onclick='logout();'></div>\n";
			}
		}
	}

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. :)