Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][AJAX]Odwołanie się do innego pliku poprzez AJAX i automatyczne wylogowanie
Forum PHP.pl > Forum > Przedszkole
casperii
Witam, czy da się zrobić coś na zasadzie, że następuje wylogowanie się jeżeli zmienię hasło.
Na chwilę obecną mam aktualizowanie hasła poprzez Ajax. Myślałem żeby niszczyć sesje "session_destroy()" ale to nic nie daje.
Może coś w kodzie AJAX jeśli jest success ?
Star
Jestem raczej początkującym "programistą" jestli chodzi o AJAX ,ale jesli odbierasz dane zwrocone przez serwer to mysle ze mozesz tak pokierować kodem ,że nastąpiło by wylogowanie. Ciężko cos powiedzieć bez kodu smile.gif
tzm
If success redirect to /logout
casperii
Dzięki za pomoc, ale byłbym wdzięczny jakbyś mi jeszcze podpowiedział bo AJAX mam rozbity na 4 ID w submitach:

$('#UpdateDataPersonal, #UpdateDataPhone, #UpdateDataNotice, #UpdatePass').submit(function(){
...
...
...
...
$.ajax({
type: "POST",
...
...
},
success: function(data){

...
}

No i teraz chcę by tylko mi wylogowało jeśli ID forma było UpdatePass bo po co ma mi cały czas wylogować smile.gif
Comandeer
Rozumiem, że zrobiłeś sobie taki uniwersalny catcher dla formularzy?

W takim razie wystarczy wewnątrz $.fn.submit sprawdzić czy aktualny formularz (this) ma odpowiednie [id]. Coś takiego powinno styknąć:
Kod
var form = this;
[…]
$.ajax({
    success: function()
    {
        if(form.id === 'takiJakiChcesz')
            redirect();
    }
});

casperii
Coś chyba nie działa zobacz:

  1. $(document).ready(function(){
  2. $('#UpdateDataPersonal, #UpdateDataPhone, #UpdateDataNotice, #UpdatePass').submit(function(){
  3. var form = $(this),
  4. formData = form.serialize(),
  5. formUrl = form.attr('action'),
  6. formMethod = form.attr('method'),
  7. responseMsg = $('#info_upd_data');
  8. responseMsg.hide()
  9. .addClass('response-waiting')
  10. .text('proszę czekać...')
  11. .fadeIn(200);
  12. //alert("Data: " + formData);
  13.  
  14. $.ajax({
  15. type: "POST",
  16. //type: formMethod,
  17. url: "/ajax/AjaxUpdateData.php",
  18. data: formData,
  19. processData: false,
  20. //contentType: false,
  21.  
  22. error: function(jqXHR, textStatus, errorMessage){//
  23. console.log(errorMessage);//
  24. },//
  25.  
  26. success: function(data){
  27. var responseData = jQuery.parseJSON(data),
  28. klass = '';
  29. switch(responseData.status){
  30. case 'error':
  31. klass = 'response-error';
  32. break;
  33. case 'success':
  34. klass = 'response-success';
  35. $('#loadName').fadeOut();
  36. $('#loadName').text($('input[name="imie"]').val()+' '+$('input[name="nazwisko"]').val());
  37. $('#loadName').fadeIn()
  38.  
  39. $('#loadSex').fadeOut();
  40.  
  41. if($('input[name="sex"]:checked').val() == 'm'){
  42. $("#loadSex").html('mężczyzna');
  43. $("#loadAvatar").removeClass();
  44. $("#loadAvatar").addClass('avatarm');
  45. }
  46.  
  47. else if($('input[name="sex"]:checked').val() == "f") {
  48. $("#loadSex").html('kobieta');
  49. $("#loadAvatar").removeClass();
  50. $("#loadAvatar").addClass('avatarw');
  51. }
  52.  
  53. $('#loadSex').fadeIn();
  54. if(form.id === 'UpdatePass'){
  55. alert('ok');
  56. }
  57. break;
  58. }
  59.  
  60.  
  61. responseMsg.fadeOut(200,function(){
  62. $(this).removeClass('response-waiting')
  63. .addClass(klass)
  64. .text(responseData.message)
  65. .fadeIn(200,function(){
  66. setTimeout(function(){
  67. responseMsg.fadeOut(200,function(){
  68. $(this).removeClass(klass);
  69. });
  70. },3000);
  71. });
  72. });
  73. console.log(data)//
  74. }
  75. });
  76. return false;
  77. });
  78. });
  79. //end update


  1. <form id="UpdateDataNotice" method="POST">
  2. jakieś tam pola
  3. </form>
  4.  
  5. <form id="UpdatePass" method="POST">
  6. jakieś tam pola
  7. </form>


Nie wykonuje się alert dla UpdatePass. Hasło się aktualizuje w bazie.
Comandeer
A zrób se alert(form.id) i zobacz co zwraca. Tak na chłopski rozum winno działać
casperii
Cytat(Comandeer @ 17.05.2015, 19:28:16 ) *
A zrób se alert(form.id) i zobacz co zwraca. Tak na chłopski rozum winno działać



if(form.id === 'UpdatePass'){
alert(form.id);
}

Nie pokazuje nic.

samo alert(form.id); zwraca undefined.
Comandeer
Heh, zapędziłem się - w końcu to jQuery, nie czysty JS
Kod
if(form.attr('id') === 'UpdatePass')

powinno już działać
casperii
Cytat(Comandeer @ 17.05.2015, 20:09:13 ) *
Heh, zapędziłem się - w końcu to jQuery, nie czysty JS
Kod
if(form.attr('id') === 'UpdatePass')

powinno już działać


Super! Działa jak należy:-)

  1. if(form.attr('id') === 'UpdatePass'){
  2. setTimeout(function() {
  3. window.location.href = "/wyloguj.html";
  4. }, 2000);
  5. }
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.