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

Jak dodać kod JS do PHP

Object Storage Arubacloud
0 głosów
936 wizyt
pytanie zadane 3 lutego 2017 w PHP przez ThePatrykOOO Dyskutant (8,400 p.)

Witam, mam mały problem, chodzi o to że klient zażyczył sobie aby jako powiadomienie o poprawnym wypełnieniu formularza dodać komunikat alert JS. Tak wygląda kod: 

$_SESSION['success'] = "<script> alert('
			Dziękujemy! Formularz został prawidłowo wypełniony. Na e-mail podany w formularzu została wysłana wiadomość z potwierdzeniem.'
			)</script>";

 

komentarz 3 lutego 2017 przez Vento Pasjonat (17,120 p.)
Nie lepiej zrobić to ajaxem?

5 odpowiedzi

0 głosów
odpowiedź 4 lutego 2017 przez mtk3d Nałogowiec (46,690 p.)
AJAX
komentarz 4 lutego 2017 przez ThePatrykOOO Dyskutant (8,400 p.)
Czyli jak to powinno wyglądać?
0 głosów
odpowiedź 4 lutego 2017 przez rusk Obywatel (1,640 p.)
edycja 4 lutego 2017 przez rusk
Obsługujesz w kodzie js event "onclick" buttona submitującego formularz. W tym kodzie wysyłasz dane na serwer ajaxem przy pomocy obiektu XMLHttpRequest(), serwer je przetwarza/zapisuje do bazy itd. i zwraca odpowiedź (typu "success" lub "failure"). Na podstawie tej odpowiedzi wywołujesz alert() z odpowiednim komunikatem. W sieci znajdziesz mnóstwo tutoriali jak użyć ajaxa,

Zobacz tutaj https://developer.mozilla.org/pl/docs/XMLHttpRequest
0 głosów
odpowiedź 4 lutego 2017 przez Klik Obywatel (1,540 p.)

Ja mam to zrobione w ten sposób:

var request = new XMLHttpRequest();
request.open("POST", "/votes", true);
request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
request.send("action="+actionButton.id+"&artId="+artId);
request.onreadystatechange = function () {
			if (request.readyState === 4) {
				if (request.status === 200) {
					if(request.responseText=='LOGOUT'){
						artIdNode.lastElementChild.innerHTML='Aby oddać głos musisz być zalogowany';
					}else if(request.responseText=='VOTED'){
						artIdNode.lastElementChild.innerHTML='Już oddałeś głos na ten artykuł';
					}else {
						actionButton.getElementsByTagName('span')[0].innerHTML = request.responseText;
						artIdNode.lastElementChild.innerHTML='Dziękujemy';
					}
				}
			}
		};

 

I PHP.

 $type = $_POST['action'];
 $artId = $_POST['artId'];
 $vote = new Votes();

$userId = $this->User->getID();
        if($vote->checkVote($artId,$userId)!=0){
            echo 'VOTED';
            return false;
        }
        switch($type) {
            case 'yes':
                $ask =$vote->addVote('yes',$artId,$userId);
                echo $ask['yes'];
                break;
            case 'no':
                $ask =$vote->addVote('yes',$artId,$userId);
                echo $ask['no'];
                break;
            default:
         
                break;
        }

Nie wiem czy tak jest w 100% poprawnie, ale działa. Nie jestem pewien czy wartości zmiennych powinno się zwracać jako echo.

0 głosów
odpowiedź 4 lutego 2017 przez Filip31411 Dyskutant (8,820 p.)

Ajaxem:

Pobierasz JS'em wartości z pól formularza, wysyłasz je ajaxem (polecam ajax'a przez jQuery) w formie np. JSON'a (w artykule o ajax'ie przez jQuery jest użyty właśnie JSON), przez metodę np. GET do pliku php, który sobie wysłane dane zwaliduje (tak jak to dotychczas robisz), tylko że jeśli walidacja się uda "wyświetlasz" echem np. "true", a w przeciwnym wypadku np. "false".

To co wyświetlisz w pliku php do którego się odwołujesz ajaxem, będziesz miał w zmiennej zawierającej rezultat wykonania się całego ajaxa. Ładnie jest to pokazane właśnie w w artykule o ajaxie przez jQuery.

Jak już masz zmienną z rezultatem, to tylko sprawdzasz w JS'ie if'em czy ta zmienna jest równa "true", czy "false" (jeśli "true" wyświetlasz alert...).

Jeśli czegoś nie rozumiesz to pisz :)

komentarz 4 lutego 2017 przez Klik Obywatel (1,540 p.)
A czemu nie można to zrobić tak jak ja napisałem?

I czy naprawdę nie obejdzie się bez jquery? Co jest nie tak z zapytaniem AJAX w czystym JS.
komentarz 4 lutego 2017 przez xmentor Nałogowiec (49,520 p.)

Jeżeli nie używasz tej biblioteki do niczego innego to jasne, że lepiej to zrobić w czystym JS.

Nie powinno się mieszać kodu JS z PHP.

komentarz 4 lutego 2017 przez Klik Obywatel (1,540 p.)
A gdzie ja niby mieszam?
komentarz 4 lutego 2017 przez xmentor Nałogowiec (49,520 p.)
Ah, wybacz, nie spojrzałem na to kto pisał odpowiedz i stwierdziłem że autor pytania(tak wiem, że jest oznaczony) :)
komentarz 4 lutego 2017 przez Klik Obywatel (1,540 p.)
Nie ma sprawy. Wystraszyłem się że polecenie echo to już jest mieszanie :).
komentarz 4 lutego 2017 przez Filip31411 Dyskutant (8,820 p.)

A czemu nie można to zrobić tak jak ja napisałem?

I czy naprawdę nie obejdzie się bez jquery? Co jest nie tak z zapytaniem AJAX w czystym JS.

Moja odpowiedź w żaden sposób nie wyklucza poprawności twojej odpowiedzi. Ja chciałem odpowiedzieć na pytanie tłumacząc jak to zrobić.

Nie każe mu tego robić w jQuery. Zrobi w czym chce, ale moim zdaniem w jQuery jest to dużo prostsze (jak na początek).

Poza tym wyobraź sobie, że masz taki problem jak pytający, nie wiesz co to ajax, a jako rozwiązanie problemu ktoś podaje Ci gotowy kod z jego użyciem.

Po prostu twoja odpowiedź wydała mi się mało pomocna.

komentarz 4 lutego 2017 przez Klik Obywatel (1,540 p.)

Ja nie twierdzę że twoja odpowiedź wyklucza moją. Interesowało mnie tylko co takiego jest lepszego w użyciu AJAXa przez jquery niż w czystym JS. I po co pchać JSONa do tego? Użycie AJAXa w czystym kodzie jakieś skomplikowane nie jest. A ładowanie jquery tylko do tego zapytania jest bez sensu. A widziałem już ludzi którzy ładowali jquery tylko po ta aby pobrać element po ID przy użyciu $.

A co jeśli pytający nie używa jquery albo nawet nigdy nie używał?

Poza tym wyobraź sobie, że masz taki problem jak pytający, nie wiesz co to ajax, a jako rozwiązanie problemu ktoś podaje Ci gotowy kod z jego użyciem.

Podałem gotowy kod bo rusk  już wytłumaczył co powinien użyć. Ja wolałbym otrzymać gotowy kod i informację jak się taka technologia nazywa (ajax).

A to która odpowiedź jest bardziej pomocna to już kwestia indywidualna.

0 głosów
odpowiedź 5 lutego 2017 przez Mikołaj Kawczynski Dyskutant (9,160 p.)
Ja mam prostą jak drut metodę może primitywną ale prostą, po zakończeniu sprawdzania przekierowujesz na link strona_doceklowa.html#wyswietl lub strona_doceklowa.html#niewyswietlaj. Dla przegladarki to nic nie znaczy ale ty z gotowej/wbudowanej funkcji odczytasz sob adres karty i nastepnie kolejna gotowa funkcja stringa podzielisz na "wyrazy" jako separatora użyjesz #. Więc masz tablice gdzie 2 string to twoja zmienna. I zwykły if. Mało kombinowania i proste w działaniu, i wsyzstko na samych gotowcach.

Zmiennaglobalna z linkiem:

window.location.href

I dzielenie po znaku http://www.w3schools.com/jsref/jsref_split.asp

Podobne pytania

0 głosów
0 odpowiedzi 416 wizyt
pytanie zadane 24 maja 2019 w JavaScript przez iframeeh Użytkownik (680 p.)
–1 głos
2 odpowiedzi 262 wizyt
0 głosów
2 odpowiedzi 372 wizyt
pytanie zadane 18 marca 2017 w PHP przez Mateusz Patalan Bywalec (2,140 p.)

92,580 zapytań

141,433 odpowiedzi

319,665 komentarzy

61,966 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!

...