Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Jquery problem
jacobson
post
Post #1





Grupa: Zarejestrowani
Postów: 468
Pomógł: 36
Dołączył: 14.12.2010

Ostrzeżenie: (0%)
-----


Czesc Wszystkim, mam taki problem... otoz kiedy wywoluje kod

  1. $(this).fadeOut(500);
  2. $(this).fadeIn(500);
  3. $(this).html('nowa tresc');


to ta nowa tresc pojawia sie zanim jeszcze zostanie zakonczone fadeout... a chcialbym zeby poprzednia tresc cala zniknela, dopiero zamienilo sie na nowa tresc i potem pojawilo. W czym moze byc problem ?

a moze tak zeby nie pytac juz w nowym temacie... jest mozliwosc zrobienia w skrypcie jquery warunku php ? poniewaz mam $().click i on mi sie wywoluje zawsze po nacisnieciu przycisku a chcialbym zeby sprawdzal najpierw czy uzytkownik jest zalogowany i dopiero jezeli jest to zeby ten click dzialal. Z gory dzieki za pomoc smile.gif

Ten post edytował jacobson 28.05.2011, 10:28:43
Go to the top of the page
+Quote Post
tvister
post
Post #2





Grupa: Zarejestrowani
Postów: 253
Pomógł: 29
Dołączył: 18.08.2008

Ostrzeżenie: (0%)
-----


Potrzebujesz timeout-a z czasem oczekiwania 500+500

Co do drugiego to jest taka możliwość :-p


--------------------
Kto rano wstaje ten leje jak z cebra.
Go to the top of the page
+Quote Post
-mkdes-
post
Post #3





Goście







Zrób tak. Czas Delay ustawiasz tak aby ładnie zgrywało się w czasie.

Kod
    $(this).delay(500).fadeOut(500);
    $(this).delay(500).fadeIn(500);
    $(this).delay(500).html('nowa tresc');
Go to the top of the page
+Quote Post
jacobson
post
Post #4





Grupa: Zarejestrowani
Postów: 468
Pomógł: 36
Dołączył: 14.12.2010

Ostrzeżenie: (0%)
-----


Dzieki za pomoc, a co do drugiego pytania to jak to mozna zrobic ?
Go to the top of the page
+Quote Post
zegarek84
post
Post #5





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


Cytat(jacobson @ 28.05.2011, 14:23:44 ) *
Dzieki za pomoc, a co do drugiego pytania to jak to mozna zrobic ?

jeśli wiadomo czy jest zalogowany od razu przy generowaniu strony (logowanie nie jest za pomocą ajax) to generując kod html'a możesz dać w stylu:
Kod
<script type="text/javascript">
var zalogowany = true;
</script>

akurat powyższe ląduje do window.zalogowany - nie będę się rozpisywał - poczytaj o zasięgu zmiennych - lub przekaż przez jakąś funkcję/metodę zmienną do lokalnego skope:
Kod
<script type="text/javascript">
czy_zalogowany(true);
</script>


i potem na podstawie zmiennej (zwykły if) obsługujesz czy ma klik działać czy nie...

jesli logowanie odbywa się za pomoca ajax'a to jeśli masz gdzieś zapisaną odpowiedź w zmiennej to na jej podstawie - inaczej znowu ajax'em musisz sprawdzić czy zalogowany...


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
gargamel
post
Post #6





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

Ostrzeżenie: (0%)
-----


fadeIn i fadeOut umożliwiają coś takiego jak callback - funkcja wywołana po wykonaniu którejś z tych metod. Proponuję:

  1. $(this).fadeOut(500, function(){
  2. $(this).html('nowa tresc');
  3. $(this).fadeIn(500);
  4. });


Go to the top of the page
+Quote Post
jacobson
post
Post #7





Grupa: Zarejestrowani
Postów: 468
Pomógł: 36
Dołączył: 14.12.2010

Ostrzeżenie: (0%)
-----


oooo dzieki Gargamel, Twoja propozycja mi najbardziej odpowiada smile.gif

A jezeli chodzi sprawdzanie w JS zmiennych php

to mam :

  1. $(document).ready(
  2. function(){
  3. var islogged = <?php $this->session->userdata('is_logged_in'); ?>
  4. if(islogged){
  5. $('.content_main_entry_enroll').click(
  6. function(){
  7. $(this).fadeOut(500, function(){
  8. $(this).html('Hello');
  9. $(this).fadeIn(500);
  10. });
  11. }
  12. );}
  13. }
  14. );


ale tak naprawde nie wiem czy w ogole dobrze sie za to zabieram...
Go to the top of the page
+Quote Post
gargamel
post
Post #8





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

Ostrzeżenie: (0%)
-----


Jeśli
  1. $this->session->userdata('is_logged_in');
printuje Ci potrzebną zmienną to jak najbardziej dobrze, jeśli nie to oczywiście daj echo.
Go to the top of the page
+Quote Post
jacobson
post
Post #9





Grupa: Zarejestrowani
Postów: 468
Pomógł: 36
Dołączył: 14.12.2010

Ostrzeżenie: (0%)
-----


no to w momencie jak mam w php sprawdzanie
$logged_in = $this->session->userdata('is_logged_in');
if(isset($logged_in) || $logged_in == TRUE ) i taki warunek dziala a ten co podalem jak jest

var islogged = <?php $this->session->userdata('is_logged_in'); ?>
if(islogged || islogged == TRUE) juz nie dziala ...:/
Go to the top of the page
+Quote Post
gargamel
post
Post #10





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

Ostrzeżenie: (0%)
-----


  1. var islogged = <?php echo $this->session->userdata('is_logged_in'); ?>


Tu natomiast:
Cytat
if(islogged || islogged == TRUE) juz nie dziala ...:/

jeśli userdata('is_logged_in') przyjmuje wartości true / false wystarczy :
  1. if(islogged)


Ten post edytował gargamel 30.05.2011, 10:22:27
Go to the top of the page
+Quote Post
jacobson
post
Post #11





Grupa: Zarejestrowani
Postów: 468
Pomógł: 36
Dołączył: 14.12.2010

Ostrzeżenie: (0%)
-----


No wlasnie probowalem razem z echo i bez echo i nic nie dziala zupelnie :/

Jak dodalem sobie linijke alert(islogged) w funkcji click. to po nacisnieciu wyswietla mi sie w alercie 1 tak wiec to dziala a jak sprawdzam warunek if to mi juz nie dziala :/

probowalem dac samo if(islogged) albo if(islogged == '1') albo if(islogged == 1) i nic nie dziala tongue.gif


Zadzialalo .... brakowalo ";" na koncu linijki (po ?>) i dlatego nie dzialalo ...


Nie iwem czy wypada mi juz .. ale mialbym jeszcze jedno pytanie ... poniewaz ok sprawdzam czy ktos jest zalogowany ale musze tez sprawdzic czy juz jest zapisany jak jest zeby wylaczyc mozliwosc zapisu

mam cos takiego

if(isenrolled != 'Zapisany'){
$(this).fadeOut(500, function(){
$(this).html('<a href="#">Zapisany</a>');
$(this).fadeIn(500);
$(this).removeAttr("href");
});
}}

tylko jest jeden problem bo mam tu ustawione te timeouty przez ktore jezeli ktos szybko kliknie to moze 3 razy zapisac sie na dany event.... a chcialbym zeby nie mial takiej mozliwosci.

Ten post edytował jacobson 30.05.2011, 17:30:02
Go to the top of the page
+Quote Post
gargamel
post
Post #12





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

Ostrzeżenie: (0%)
-----


Najpierw wywalaj href a potem rób te fadeOuty i fadeIny
Go to the top of the page
+Quote Post
melkorm
post
Post #13





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


A wiesz że to jest ŻADNE zabezpieczenie?
Powinieneś tą treść ładować via AJAX i wtedy w skrypcie sprawdzać czy jest zalogowany czy nie, walidację w JS można o kant d*py obić.


--------------------
Go to the top of the page
+Quote Post
jacobson
post
Post #14





Grupa: Zarejestrowani
Postów: 468
Pomógł: 36
Dołączył: 14.12.2010

Ostrzeżenie: (0%)
-----


Wszystko w ogole robie na codeigniterze... to wszystko mam w widoku, np jezeli chodzi o sprawdzanie czy uzytkownik jest zalogowany to wl;asnie tak $this->session->userdata('is_logged_in')

a nie rozumiem do konca o czym mowisz jezeli chodzio ladowanie via ajax i potem w skrypcie sprawdzane...

  1. $(document).ready(
  2. function(){
  3. var islogged = <?php echo $this->session->userdata('is_logged_in'); ?>;
  4. if(islogged){
  5. $('.content_main_entry_enroll').click(
  6. function(){
  7. var isenrolled = $(this).text().trim();
  8. if(isenrolled != 'Zapisany'){
  9. $(this).removeAttr("href");
  10. $(this).fadeOut(500, function(){
  11. $(this).html('<a href="#">Zapisany</a>');
  12. $(this).fadeIn(500);
  13. });
  14. }}
  15. );
  16. }}
  17. );


sam ten div wyglada tak: ($is_enrolled jest przekazywane z kontrolera i jest to tablica zapelniona id na ktore juz jest zapisany uzytkownik.

  1. <div class="content_main_entry_enroll">
  2. <?php
  3. $logged_in = $this->session->userdata('is_logged_in');
  4. if (in_array($item->id, $is_enrolled) && $logged_in) {
  5. ?>
  6. <a href="#">Zapisany</a>
  7. <?php } else { ?>
  8. <a href="##" onclick="enroll('<?php echo $item->id; ?>')">Zapis</a>
  9. <?php } ?>
  10.  
  11. </div>


Szczerze to nie przychodzi mi do glowy inna metoda, zeby to zrobic...

a i tak btw to zamiana miejscami tego hrefa z fadami nie zmienia nic niestety :/

Ten post edytował jacobson 30.05.2011, 18:35:43
Go to the top of the page
+Quote Post
melkorm
post
Post #15





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Poczytaj o AJAX, inaczej tego nie zrobisz ani nie zabezpieczysz.

Uprawnienia po stronie przeglądarki łamie się ( to nie jest nawet łamanie ) w kilka sekund, wystarczy wy-edytować kod HTML/JS i mogę zrobić wszystko co mi się żywnie podoba bez walidacji po stronie serwera.



--------------------
Go to the top of the page
+Quote Post
jacobson
post
Post #16





Grupa: Zarejestrowani
Postów: 468
Pomógł: 36
Dołączył: 14.12.2010

Ostrzeżenie: (0%)
-----


no ok ale moze jakas podpowiedz co mam poczytac o ajax ?
rozumiem ze mam to zrobic tak ze wszystko to co mam w tym divie ma byc ladowane przez ajaxa a przed zaladowaniem (wywolaniem skryptu ajaxa) mam miec sprawdzenie skryptem php tak ?
Go to the top of the page
+Quote Post
melkorm
post
Post #17





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


AJAX'em wywołujesz skrypt php, który zwróci Tobie treść lub to że nie jest zalogowany.

To masz poczytać dokładnie


--------------------
Go to the top of the page
+Quote Post
jacobson
post
Post #18





Grupa: Zarejestrowani
Postów: 468
Pomógł: 36
Dołączył: 14.12.2010

Ostrzeżenie: (0%)
-----


Dobra jezeli moge to jeszcze jedno pytanie ... Cala tresc main wywolywana jest w foreachu. Ajaxem mam sie posluzyc zeby obsluzyc sam przycisk.
po nacisnieciu przycisku wywolywana jest funkcja
  1. function enroll(id){
  2.  
  3. $(document).ready(
  4. function(){
  5. $.post(
  6. 'main/ajax_function/'+id
  7. );
  8. ...

ta funkcja odpowiada za zapisanie do bazy ... Czy Tobie chodzi o dodanie jakiegos callback z tej funkcji czy bardziej o ladowanie w ogole calego tego foreacha?
Go to the top of the page
+Quote Post
melkorm
post
Post #19





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Tak, w callback pod response dostajesz odpowiedź i wtedy możesz dać tam np "0" => nie zalogowany, treść = zalogowany itp.


--------------------
Go to the top of the page
+Quote Post
jacobson
post
Post #20





Grupa: Zarejestrowani
Postów: 468
Pomógł: 36
Dołączył: 14.12.2010

Ostrzeżenie: (0%)
-----


a Jestem w stanie jako funkcje np error pobrac to co zwraca kontroler i w zaleznosci od tego wyswietlic odpowiedni komunikat ?
bo wlasnie probuje caly czas przekazac
error: function(data){
if(!data) {
alert("nie zalogowany");
}
}
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 06:39