• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

$.post() nie dziala

Object Storage Arubacloud
0 głosów
213 wizyt
pytanie zadane 7 stycznia 2018 w JavaScript przez omasso1 Nowicjusz (120 p.)

Witam mam taki problem. Otóż mam na stronie przycisk ktory po nacisnieciu wywoluje w js funkcje ktora ma wywowac funkcje $.post() i wszystko dziala do tego momentu, funkcja odpowiedzialna(tzn no argument w tej funkcji post) ktora cos robi gdy sie wykona poprawnie post dziala, ale php sie nie wykonuje. Bardzo prawdopobne ze cos zle rozumiem wiec chetnie sie dowiem o co chodzi. Dziekuje

I teraz tak to jest kod z php z tym przyciskiem

<form>
            <div class="form-group">
              <label for="login1">Login</label>
              <input type="text" class="form-control" id="login1" placeholder="Login" name = "login" 
            </div>
            <div class="form-group">
              <label for="password1">Hasło</label>
              <input type="password" class="form-control" id="password1" placeholder="Hasło" name = "haslo">
            </div>
            <button type="button" class="btn" href="#" id="login_submit">Zaloguj się</button>
          </form>

To jest kod z js

let submit = $('#login_submit');

submit.click(function(){
	let login_ = $('#login1').val();
	let haslo_ = $('#password1').val();
	
	$.post("test.php",{login:login_, haslo:haslo_}, function(){ console.log( {login:login_, haslo:haslo_});});

})

A to kod z php

<?php
    header("Location: zalogowano.php");   //to jest strona na ktora ma przekierowac sie strona po nacisnieciu tego przycisku tak tylko zeby sprawdzic ze ten php sie wogole wykonuje , i nawet to nie dziala
    if ((!isset($_POST['login'])) || (!isset($_POST['haslo'])))
        {
            header("Location: zalogowano.php");

        }
    if(isset($_POST['login']) || isset($_POST['haslo'])){
        header("Location: zalogowano.php"); 

?>

 

1 odpowiedź

+1 głos
odpowiedź 7 stycznia 2018 przez Ivan Maniak (60,650 p.)

Po wciśnięciu przycisku, który znajduje się w form, przeglądarka automatycznie wysyła formularz. Ty tego nie chcesz, ponieważ sam chcesz go wysyłać za pomocą JS. Aby temu zapobiec musisz wywołać .preventDefault() na obiekcie Eventu, który jest przekazywany do funkcji jako argument. jQuery event.preventDefault()

komentarz 7 stycznia 2018 przez omasso1 Nowicjusz (120 p.)

zmienilem to tak, nie do konca wiedzialem ktory mam dac wiec dalem na button i na tym obiekcie preventDefault() i nadal nie dziala

let submit = $('#login_submit');

submit.click(function(event){
	event.preventDefault();
	let login_ = $('#login1').val();
	let haslo_ = $('#password1').val();
	
	$.post("test.php",{login:login_, haslo:haslo_}, function(){ console.log( {login:login_, haslo:haslo_});});

})

$( "button" ).click(function(event) {
event.preventDefault()});

 

komentarz 7 stycznia 2018 przez omasso1 Nowicjusz (120 p.)
I teraz tak naszlo mnie jeszcze jedno pytanie. Na pewno wysylany jest formularz gdy to nie jest submit tylko button? bo wlasnie po tej zmianie przestalo dzialac. Tzn no i po dolaczeniu js
komentarz 7 stycznia 2018 przez Ivan Maniak (60,650 p.)

Nie zauważyłem, że do buttona dodałeś [type=button]. Proponuję wyrzucić type z buttona i "wysyłać" formularz za pomocą Eventu submit.

komentarz 7 stycznia 2018 przez omasso1 Nowicjusz (120 p.)
I wlasnie o to sie rozchodzi ze ja bym nie chcial aby sie strona przeladowywala w zaden sposob. Bo to wyglada tak, ze robie projekt z kolezanka, i ona sie zajmuje wygladlem a ja reszta zeby to dzialalo, i zrobila bardzo fajne okienka ktore wyskakuja, a w momencie gdy naciska sie submit to one sie zamykaja
komentarz 7 stycznia 2018 przez Ivan Maniak (60,650 p.)

Gdy użyjesz wydarzenia submit i preventDefault na nim, strona nie będzie się przeładowywała, a będziesz pewny, że użytkownik faktycznie chce wysłać formularz.

komentarz 7 stycznia 2018 przez omasso1 Nowicjusz (120 p.)
O wlasnie wpadlem na ten pomysl, dziekuje bardzo :D
komentarz 7 stycznia 2018 przez omasso1 Nowicjusz (120 p.)
No i teraz tylko jest taki problem ze faktycznie no okienko zostaje, ale nie wysyla formularza, nawet przez js przez $.post
komentarz 7 stycznia 2018 przez Ivan Maniak (60,650 p.)
Pokaż kod i sprawdź czy funkcja podczas wydarzenia się wykonuje (wrzuć w nią console.log) i sprawdź czy coś pojawia się w konsoli (F12 Chrome).
komentarz 7 stycznia 2018 przez omasso1 Nowicjusz (120 p.)
$("#login_submit").click(function(e){
	let login_ = $("#login1").val();
	let haslo_ = $("#password1").val();
    e.preventDefault();
	console.log("cos");
	//$.post("test.php",{login:login_, haslo:haslo_}, function(){ console.log( {login:login_, haslo:haslo_});});
  });

 

komentarz 7 stycznia 2018 przez omasso1 Nowicjusz (120 p.)
komentarz sie pokazuje w konsoli
komentarz 7 stycznia 2018 przez Ivan Maniak (60,650 p.)
A po wysłaniu zapytania coś wyskakuję? Jakiś błąd?

Jeżeli sprawdzasz czy zapytanie działa poprzez header(Location) w PHP, to zawsze on nie będzie "działał". Nagłówek faktycznie będzie przekazywany do odpowiedzi, ale nie będzie działał on "automatycznie".
komentarz 7 stycznia 2018 przez omasso1 Nowicjusz (120 p.)
Nie wyskakuje nic
komentarz 7 stycznia 2018 przez omasso1 Nowicjusz (120 p.)
mam tez echo z tymi zmiennymi, tzn $_POST['login'] i haslo i z nich tez nic nie ma
komentarz 7 stycznia 2018 przez Ivan Maniak (60,650 p.)

Spróbuj wykonać takie zapytanie i pokaż co się zwraca konsola.

$.post("test.php", {login:login_, haslo:haslo_},
  function( data, status ) {
    console.log( data, status );
  }
);

 

komentarz 7 stycznia 2018 przez omasso1 Nowicjusz (120 p.)
wyskakuja dane z wejsc tzn login i haslo jakie wpisalem oraz "success"
komentarz 7 stycznia 2018 przez omasso1 Nowicjusz (120 p.)
ooo dobra przepraszam zle powiedzialem, wyskakuje mi teraz dobrze to co chcialem
komentarz 7 stycznia 2018 przez omasso1 Nowicjusz (120 p.)
tzn ten plik do ktorego chcialem sie przeniesc gdy wpisalem dobre dane. tzn tekst z tego pliku

Podobne pytania

0 głosów
0 odpowiedzi 129 wizyt
pytanie zadane 17 stycznia 2023 w JavaScript przez Antoni2422 Użytkownik (570 p.)
0 głosów
1 odpowiedź 210 wizyt
pytanie zadane 2 grudnia 2017 w JavaScript przez UltraSF Stary wyjadacz (11,740 p.)

92,614 zapytań

141,465 odpowiedzi

319,773 komentarzy

61,996 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...