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

Problem z ajax

Object Storage Arubacloud
0 głosów
139 wizyt
pytanie zadane 5 grudnia 2015 w JavaScript przez michal Mądrala (5,560 p.)

Mam taki kod:

$(document).ready(function(){
	$('#szukaj_przejazdow').click(function(){
		var od = $('#od').val();
		var to = $('#do').val();
		
		$.ajax({
			type : "post",
			url : "szukaj_przejazdow.php",
			data :
			{
				od :od,
				to : to
			},
			complete : function(){
				
			},
			success: function(msg){
				$('#wynik').html(msg);
			},
			error: function(){
				alert("wystapil blad w polonczeniu");
			}
		}); // koniec ajax
	}); // koniec funkcji click
}); // koniec funkcji ready

Wynikiem tego skryptu php jest proste echo ktore składa się z tekstu ze zmiennymi.

Jeśli zamiast $('#wynik').html(msg); wstawię alert(msg); to wyświetla mi ładnie wynik w okienku, Natomiast jeśli wstawiam to do diva wynik to po wciśnieciu przycisku, albo wynik pojawia się na ułamek sekundy i znika, albo wcale się nie pojawia.

Co może być tego przyczyną?

2 odpowiedzi

+1 głos
odpowiedź 5 grudnia 2015 przez Comandeer Guru (602,340 p.)
wybrane 5 grudnia 2015 przez michal
 
Najlepsza
A nie ma jakiejś akcji, która kasuje zawartość tego elementu?
komentarz 5 grudnia 2015 przez michal Mądrala (5,560 p.)

Raczej nie mam nic takiego. PHP wyglada tak:

<?php
	
	$od = $_POST['od'];
	$do = $_POST['to'];
	
	echo "Wyszukaj przejazdy od: ".$od." do: ".$do;
	
?>

 

komentarz 5 grudnia 2015 przez Comandeer Guru (602,340 p.)
A czy przypadkiem to nie jest przypięte do kliku na przycisku wysyłania formularza?
komentarz 5 grudnia 2015 przez michal Mądrala (5,560 p.)

W formularzu mam tylko:

<button class="buttonZaloguj" id="szukaj_przejazdow">Pokaż</button>

Już mnie załamka bierze ponieważ dane zwraca zarówno alertem, jak i document.write, a do diva nie chce wstawić

<div id="wynik"></div>

 

komentarz 5 grudnia 2015 przez Comandeer Guru (602,340 p.)

To jesteśmy w domu ;) Strona się odświeża, bo przycisk w formularzu go wysyła. Stąd nic się nie pokazuje.

$('#szukaj_przejazdow').click(function(){

zamień na:

$('#szukaj_przejazdow').click(function(e){
    e.preventDefault();

i poczytaj o eventach na MDN ;)

Powinno pomóc.

komentarz 5 grudnia 2015 przez michal Mądrala (5,560 p.)
No tak teraz wszystko śmiga jak się patrzy.

Dziękuje serdecznie za pomoc, muszę faktycznie coś poczytać na ten temat, bo nie spodziewałem się że w tym może być problem i za badzo dalej nie wiem dlaczego to poprawiło sytuacje, ale przynajmniej dobra lekcja z tego przykładu.

Pozdrawiam :)
komentarz 4 stycznia 2016 przez michal Mądrala (5,560 p.)
edycja 4 stycznia 2016 przez michal

Mam jeszcze pytanko, ponieważ potrzebuje jeszcze raz wywołać tą funkcje poprzez inną funkcje anonimową. Tutaj znów zaczynają się schody. Mam teraz funkcje:

function szukajprzejazdow(e)
{
e.preventDefault();
tresc funkcji;
}

I jeśli wywołam ją zdarzeniem: $('#szukaj_przejazdow').click(szukajprzejazdow);

to wszystko jest ok, ale jeśli w innej funkcji chcę to wywołać np. szukajprzejazdow(), lubszukajprzejazdow; albo szukajprzejazdow(e); to juz nie działa. 

Mam pytanie czy jakoś da się to obejść, oraz czy są na necie jakieś artykuły w których jest to w miarę łopatologicznie opisane, bo nie mogę tego ogarnąć. 

komentarz 4 stycznia 2016 przez Comandeer Guru (602,340 p.)

Musisz przekazać to e:

$('elem').on( 'event', function(e) {
    innaFunkcja( e );
} );

 

komentarz 4 stycznia 2016 przez michal Mądrala (5,560 p.)
Qrde nie wiem czy sie dobrze zrozumieliśmy. Chcę wywołać funkcję szukajprzejazdów z innego miejsca w kodzie. Nie za pomocą zdarzenia, tylko normalnie np: szukajprzejazdow(), ale nie działa. :(

Z góry dziękuje za poświęcony mi czas.
komentarz 4 stycznia 2016 przez Comandeer Guru (602,340 p.)

Hmm…

e && e.preventDefault();

?

komentarz 4 stycznia 2016 przez michal Mądrala (5,560 p.)
Dziękuje. Teraz wszystko działa. Szkoda że nie do końca wiem o co biega, no, ale widocznie jeszcze zbyt mało wiedzy posiadam. Dzięki za pomoc, pozdrawiam :)
komentarz 4 stycznia 2016 przez Comandeer Guru (602,340 p.)

To jest po prostu prostszy zapis tego:

if ( e ) {
    e.preventDefault();
}

 

0 głosów
odpowiedź 5 grudnia 2015 przez michal Mądrala (5,560 p.)
Próbowałem:

alert(msg); działa,

document.write(msg); działa,

$('#wynik').html(msg); czasami wyświetli zawartość na ułamek sekundy, a za kolejnym wykonaniem wogóle :(

Podobne pytania

0 głosów
2 odpowiedzi 269 wizyt
pytanie zadane 29 listopada 2021 w JavaScript przez Dropal Początkujący (340 p.)
+2 głosów
2 odpowiedzi 270 wizyt
pytanie zadane 23 marca 2021 w JavaScript przez dee Początkujący (360 p.)
+1 głos
0 odpowiedzi 466 wizyt
pytanie zadane 31 lipca 2020 w JavaScript przez niffe33 Nowicjusz (150 p.)

92,624 zapytań

141,482 odpowiedzi

319,822 komentarzy

62,005 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!

...