Hvordan Sende INN AJAX-Skjemaer Med JQuery

Introduksjon

jQuery kan kobles sammen med skjemainnlevering for å håndtere validering. Dette har fordelen av å gi brukerne tilbakemelding på eventuelle feil i deres innspill.

 Animert gif som viser en bruker som fyller ut innganger i et skjema og mottar en suksessmelding.

i denne opplæringen vil du bli presentert med et eksempelskjema som kommuniserer TIL EN PHP-backend. Skjemaet vil bruke jQuery til å behandle et skjema uten sideoppdatering( VED HJELP AV AJAX), angi eventuelle feil, og også vise en suksessmelding.

Forutsetninger

for å fullføre denne opplæringen trenger du:

  • denne opplæringen forutsetter AT DU HAR PHP installert lokalt og kan kjøre den innebygde webserveren. Du kan kanskje konsultere en av våre opplæringsprogrammer for å installere PHP i ditt miljø.
  • noen kjennskap til velgere og metoder fra jquery biblioteket.
  • noen kjennskap til klasser Fra Bootstrap biblioteket.
  • en koderedigerer.
  • en moderne nettleser.

Merk: denne opplæringen angir ikke de nyeste versjonene av jQuery (for tiden 3.5.1) Eller Bootstrap (for tiden 5.0.0-beta1). Men mange av leksjonene i denne opplæringen gjelder fortsatt de nyeste versjonene.

denne opplæringen ble verifisert MED PHP v7. 3.24, jQuery v2.0.3 og Bootstrap v3.0.3.

Trinn 1-Bygg Backend med PHP

i forbindelse med denne opplæringen vil backend bli skrevet I PHP.

først åpner du et terminalvindu og oppretter en ny prosjektkatalog:

  • mkdir jquery-form-validation

Naviger til denne nye prosjektkatalogen:

  • cd jquery-form-validation

bruk deretter kodeditoren til å opprette en ny process.php – fil:

– prosess.php
<?php$errors = ;$data = ;if (empty($_POST)) { $errors = 'Name is required.';}if (empty($_POST)) { $errors = 'Email is required.';}if (empty($_POST)) { $errors = 'Superhero alias is required.';}if (!empty($errors)) { $data = false; $data = $errors;} else { $data = true; $data = 'Success!';}echo json_encode($data);

denne filen vil ta verdier for name, email og superheroAlias. Hvis noen av disse verdiene ikke er oppgitt, sendes en feilmelding tilbake. Mange andre valideringer kan utføres på dette punktet, men i forbindelse med denne opplæringen vil du bare sikre at disse nødvendige inngangene er gitt. Ellers, hvis en verdi for name, email og superheroAlias er til stede, sendes en melding om suksess tilbake.

Notat: I et virkelig scenario vil backend også være ansvarlig for andre oppgaver som å ta dataene og lagre endringer i en database, opprette en økt eller sende en e-post.

nå som du har skjemabehandlingen fullført, kan du opprette skjemaet.

Trinn 2-Bygg Frontend med HTML og CSS

I forbindelse med denne opplæringen Vil Bootstrap bli brukt til å bygge ut visningene.

i prosjektkatalogen bruker du koderedigering til å opprette en index.html fil:

indeks.html
<!DOCTYPE html><html> <head> <title>jQuery Form Example</title> <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css" /> <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script></head> <body> <div class="col-sm-6 col-sm-offset-3"> <h1>Processing an AJAX Form</h1> <form action="process.php" method="POST"> <div class="form-group"> <label for="name">Name</label> <input type="text" class="form-control" name="name" placeholder="Full Name" /> </div> <div class="form-group"> <label for="email">Email</label> <input type="text" class="form-control" name="email" placeholder="[email protected]" /> </div> <div class="form-group"> <label for="superheroAlias">Superhero Alias</label> <input type="text" class="form-control" name="superheroAlias" placeholder="Ant Man, Wonder Woman, Black Panther, Superman, Black Widow" /> </div> <button type="submit" class="btn btn-success"> Submit </button> </form> </div> </body></html>

CDN-versjonen (content delivery network) av Bootstrap og jQuery vil bli referert. Skjemaets action vil bli satt TIL PHP-filen som ble opprettet tidligere. Skjemaet vil bestå av felt for name, email og superheroAlias. Skjemaet vil også trenge En Send-knapp.

Åpne et terminalvindu og naviger til prosjektkatalogen. Og kjøre PHP-serveren:

  • php -S localhost:8000

Gå til localhost:8000 i nettleseren din og følg følgende:

Skjermbilde av et skjema med felt For Navn, E-Post Og Superhelt Alias.

Nå som du har utfylt skjemaet, kan du opprette skriptet til å håndtere skjemainnlevering.

Trinn 3-Håndtering Av Skjema Send Logikk I JavaScript og jQuery

for å sende inn et skjema via AJAX, må skriptet håndtere fire oppgaver:

  • Fange skjemaet send-knappen slik at standardhandlingen ikke finner sted.
  • Få alle dataene fra skjemaet ved hjelp av jQuery.
  • Send inn skjemadata ved HJELP AV AJAX.
  • Vis feil hvis det er noen.

bruk kodeditoren til å opprette en ny form.js fil:

skjema i prosjektkatalogen.js
$(document).ready(function () { $("form").submit(function (event) { var formData = { name: $("#name").val(), email: $("#email").val(), superheroAlias: $("#superheroAlias").val(), }; $.ajax({ type: "POST", url: "process.php", data: formData, dataType: "json", encode: true, }).done(function (data) { console.log(data); }); event.preventDefault(); });});

denne koden henter dataene fra feltene name, email og superheroAlias. DEN utfører DERETTER EN AJAX forespørsel til process.php med en nyttelast av skjemadata. Etter en vellykket tilkobling logger konsollen svardataene. event.preventDefault() brukes til å hindre at skjemaet oppfører seg som standard ved å laste siden på nytt ved innsending.

når du har lagret endringene til form.js, kan du gå tilbake til index.html – filen med kodeditoren. Legg til en referanse til Den Nye JavaScript-filen:

indeks.html
<!DOCTYPE html><html> <head> <title>jQuery Form Example</title> <!-- ... --> <script src="form.js"></script></head><!-- ... -->

Nå når en bruker trykker På Send-knappen på skjemaet, Vil JavaScript-koden hente alle inngangsverdiene og sende EN POSTFORESPØRSEL til process.php.

Merk: du skal bruke .done tilbakeringing for å håndtere en VELLYKKET AJAX forespørsel. Dette pleide å bli kalt .success, men det har siden blitt avskrevet i jQuery 1.8+.

Et annet alternativ er å bruke serialize i stedet for å trekke skjemainformasjonen individuelt.

PHP-skriptet vil behandle inngangene SOM AJAX-anropet sendte og returnere $data – arrayet som ble opprettet. Du kan observere dette i nettleserens konsoll etter at du har sendt inn skjemaet:

Skjermbilde Av Web DevTools-Konsollen i nettleseren som viser dataene som returneres ved innsending av et skjema-suksess: sann, melding: Suksess!

Nå som du har skjemalogikken fullført, kan du opprette skriptet for å håndtere skjemafeil.

Trinn 4-Vise Skjemavalideringsfeil

I PHP-skriptet kontrollerer koden at alle feltene er obligatoriske. Hvis et felt ikke finnes, sendes en feil tilbake.

Gå tilbake form.js og legg til følgende uthevede kodelinjer:

skjema.js
// ... $.ajax({ type: "POST", url: "process.php", data: formData, dataType: "json", encode: true, }).done(function (data) { console.log(data); if (!data.success) { if (data.errors.name) { $("#name-group").addClass("has-error"); $("#name-group").append( '<div class="help-block">' + data.errors.name + "</div>" ); } if (data.errors.email) { $("#email-group").addClass("has-error"); $("#email-group").append( '<div class="help-block">' + data.errors.email + "</div>" ); } if (data.errors.superheroAlias) { $("#superhero-group").addClass("has-error"); $("#superhero-group").append( '<div class="help-block">' + data.errors.superheroAlias + "</div>" ); } } else { $("form").html( '<div class="alert alert-success">' + data.message + "</div>" ); } }); event.preventDefault(); });// ...

denne koden kontrollerer om svaret inneholder en feil for hvert felt. Hvis det finnes en feil, legger den til en klasse has-error og legger til feilmeldingen.

nå kan du besøke skjemaet i en nettleser og eksperimentere med å sende inn data med skjemaet.

hvis det er noen feil som kommer tilbake fra serveren, vil skjemaet gi tilbakemelding på alle nødvendige felt:

 Skjermbilde av eksempelskjemaet som viser feil for inndatafelt for navn, e-post og superheltalias.

og hvis det ikke er noen feil som kommer tilbake fra serveren, vil skjemaet gi tilbakemelding for en vellykket innsending:

Skjermbilde av eksempelskjemaet som viser en suksessmelding.

Hver gang vi sender inn skjemaet, er våre feil fra vår tidligere innsending fortsatt der. Du må fjerne dem ved å fjerne dem så snart skjemaet er sendt inn igjen.

Besøk form.js og legg til følgende uthevede kodelinjer:

skjema.js
// ... $("form").submit(function (event) { $(".form-group").removeClass("has-error"); $(".help-block").remove(); // ... });// ...

denne koden fjerner has-error – klassen fra alle .form-group – elementer. Det vil også fjerne alle .help-block elementer med feilmeldinger.

Trinn 5-Viser Servertilkoblingsfeil

hvis det oppstår en feil ved tilkobling til serveren, blir DET ikke NOE json-svar fra AJAX-anropet. For å hindre at brukerne venter på et svar som aldri kommer, kan du gi en feilmelding for tilkoblingsfeil.

Gå tilbake form.js og legg til følgende uthevede kodelinjer:

skjema.js
// ... $.ajax({ type: "POST", url: "process.php", data: formData, dataType: "json", encode: true, }) .done(function(data) { // ... }) .fail(function (data) { $("form").html( '<div class="alert alert-danger">Could not reach server, please try again later.</div>' ); });// ...

hvis serveren er brutt eller ned av en eller annen grunn, vil en bruker som forsøker å sende inn et skjema få en feilmelding:

Skjermbilde av eksempelskjemaet som viser en feilmelding om å ikke kunne nå serveren.

nå som du har serverfeilmeldingen fullført, har du fullført eksempelskjemaet.

Bruke $.post i stedet for $.ajax

jQuery gir også en $.post stenografi metode som et alternativ til $.ajax.

$.ajax koden i form.js kan skrives om med $.post:

$.post('process.php', function(formData) { // place success code here}) .fail(function(data) { // place error code here });

fordelen med $.post er at det ikke krever så mye tilkoblingskonfigurasjon som skal deklareres.

Konklusjon

i denne artikkelen bygde du et eksempelskjema som kommuniserer TIL EN PHP-backend med jQuery og viser eventuelle feil i skjemaet.

som et neste trinn vil du utforske mer komplekse valideringer som gyldige e-postadresser og datoer. Du kan også være interessert i å bruke klientsiden valideringer som fungerer i nettleseren.

hvis du vil lære Mer Om JavaScript, sjekk Ut Vår JavaScript-emneside for øvelser og programmeringsprosjekter.

Leave a Reply

Din e-postadresse vil ikke bli publisert.