Mai mult
jQuery AJAX prezinte formularul
Am un formular cu numele orderproductForm
și un număr nedefinit de intrări.
Vreau să fac un fel de jQuery.obține sau ajax sau ceva de genul asta care ar numi-o pagină prin Ajax, și trimite de-a lungul toate intrările de forma orderproductForm
.
Cred că o modalitate ar fi să fac ceva de genul
jQuery.get("myurl",
{action : document.orderproductForm.action.value,
cartproductid : document.orderproductForm.cartproductid.value,
productid : document.orderproductForm.productid.value,
...
Cu toate acestea nu stiu exact toate sub forma intrărilor. Există o caracteristică, funcția sau ceva care ar trimite TOTI formă de intrări?
880
18
Acesta este un joc simplu de referință:
Sper că vă ajută.
Puteți utiliza ajaxForm/ajaxSubmit funcții de Formularul Ajax Plugin sau jQuery funcția serialize.
AjaxForm:
sau
ajaxForm va trimite atunci când butonul submit este apăsat. ajaxSubmit trimite imediat.
Serialize:
AJAX serialization documentația este aici.
O altă soluție similară folosind atribute definite pe element de formular:
Există câteva lucruri pe care trebuie să le avem în vedere.
1. Există mai multe moduri de a prezenta o formă
Prin urmare, trebuie să se leagă la forma eveniment prezinte, nu faceți clic pe butonul eveniment. Acest lucru va asigura codul nostru funcționează pe toate dispozitivele și tehnologiile de asistare, acum și în viitor.
2. Hijax
Utilizatorul nu poate aveți JavaScript activat. O hijax model este bun aici, unde ne ia ușor de control de forma folosind JavaScript, dar lăsați-l submittable în cazul în care JavaScript nu reușește.
Ar trebui să trageți URL-ul și metoda de formă, așa că, dacă HTML schimbări, noi nu't nevoie pentru a actualiza JavaScript.
3. Discret JavaScript
Folosind eveniment.preventDefault() în loc de return false este o practică bună, deoarece permite evenimentului să bule. Acest lucru vă permite alte script-uri cravată în cazul, de exemplu google analytics script-uri care pot fi monitorizarea interacțiunilor utilizatorilor.
Viteza
Ar trebui în mod ideal, utilizați un script extern, mai degrabă decât inserarea script-ul nostru inline. Putem link-ul de la acest lucru în secțiunea head a paginii folosind un script tag-ul, sau link-ul de la partea de jos a paginii pentru viteza. Script-ul ar trebui să liniște a spori experiența utilizatorului, nu obține în mod.
Cod
Presupunând că ești de acord cu toate cele de mai sus, și doriți pentru a prinde eveniment prezinte și să se ocupe de prin AJAX (o hijax model), ai putea face ceva de genul asta:
Puteți declanșa manual o formă de supunere ori de câte ori doriți prin intermediul JavaScript folosind ceva de genul:
Edit:
Recent am avut de a face acest lucru și am sfârșit prin a scrie un plugin.
Adauga un date-modul de atribut pentru a-ți forma tag-ul și apoi puteți face acest lucru:
HTML
JS
Puteți folosi, de asemenea, FormData (Dar nu sunt disponibile în IE):
Acesta este modul în care utilizați FormData.
Varianta simpla (nu trimite imagini)
Copiați și inserați ajax-ificări de o formă sau toate formele pe o pagină
Aceasta este o versiune modificată a Alfrekjv's raspunde
JavaScript
Am vrut să editați Alfrekjv's-a raspuns dar a deviat prea mult de la el, așa că a decis pentru a posta acest lucru ca un răspuns separat.
Nu trimite fișiere, nu are suport pentru butoane, de exemplu, făcând clic pe un buton (inclusiv un buton de submit) trimite valoarea sa ca formă de date, dar pentru că aceasta este o cerere ajax butonul de click nu va fi trimis.
Pentru a sprijini butoane puteți captura real faceți clic pe butonul în loc de submit.
Pe partea de server poate detecta o cerere ajax](http://davidwalsh.name/detect-ajax) cu acest antet care jquery seturi de HTTP_X_REQUESTED_WITH` pentru php
PHP
Acest cod funcționează chiar și cu fișiere de intrare
Mi-a placut acest răspuns de către superluminary și mai ales modul în care și-a înfășurat este soluția în o jQuery plugin. Deci, datorită superluminary pentru un răspuns util. În cazul meu, totusi, vreau un plugin care mi-ar permite să definiți succes și eroare stivuitoare eveniment prin intermediul unor opțiuni atunci când plugin-ul este inițializat.
Deci, aici este ceea ce am venit cu:
Acest plugin permite să cu ușurință "ajaxify" formulare html de pe pagina și să ofere onsubmit, succes și eroare stivuitoare eveniment pentru punerea în aplicare a feedback-ul de utilizator de la statutul de trimitere a formularului. Acest lucru a permis plugin-ul pentru a fi utilizate după cum urmează:
Rețineți că succes și eroare stivuitoare eveniment primi aceleasi argumente pe care le va primi de la evenimentele corespunzătoare a jQuery ajax metoda.
Am primit următorul pentru mine:
în cazul în care
Aceasta presupune postul pentru 'url' returnează un ajax în formă de
{succes: fals, eroare:'meu Eroare pentru a afișa'}
Puteți varia asta ca iti place. Simțiți-vă liber pentru a utiliza acel fragment.
jQuery AJAX prezinte formularul, nu este nimic, dar să prezinte un formular folosind formularul de ID-ul atunci când faceți clic pe un buton
Vă rugăm să urmați pașii
Pasul 1 - Formular de tag-ul trebuie să aibă un câmp de IDENTITATE
Butonul care aveți de gând să faceți clic pe
Pasul 2 - submit evenimentul este în jQuery care vă ajută să prezinte un formular. în codul de mai jos ne pregătim JSON cerere de element HTML numele.
pentru demo live click pe link-ul de mai jos
[Cum să prezinte un Formular folosind jQuery AJAX?][1]
luați în considerare utilizarea
mai apropiat
Pentru a evita mai multe formdata trimite:
Don't uita pentru a desface eveniment prezinte, înainte de a forma înaintat din nou, Utilizatorul poate apela sumbit funcție mai mult de o dată, poate a uitat ceva, sau a fost o eroare de validare.
Daca're folosind forma.serialize() - aveți nevoie pentru a da fiecare element de formular un nume de genul asta:
Iar forma devine serializat ca aceasta:
Puteți folosi acest lucru pe submit funcție de genul de mai jos.
Formular HTML
funcția jQuery:
Pentru mai multe detalii si proba de Vizita: http://www.spiderscode.com/simple-ajax-contact-form/
Acest lucru nu este răspunsul la OP's cauză, dar în cazul în care puteți't folosi static formă de DOM, puteți încerca, de asemenea, ca aceasta.
Doar un memento prietenos, care "date" poate fi un obiect, de asemenea:
`` $('forma#foo').prezinte(function () { $.ajax({ url: 'http://foo.bar/some-ajax-script', tip: 'POST', tip de date: 'json', date: { 'foo': 'unele-foo', 'bar': 'unele-bar' } }).întotdeauna(function (data) { console.log(a datelor); });
return false; }); ``
Știu că aceasta este o "jQuery" legate de întrebare, dar acum zile cu JS ES6 lucrurile sunt mult mai simple. Deoarece nu există nici o pură "javascript" răspunsul, m-am gândit că aș putea adăuga un simplu pură "javascript" soluție în acest sens, care, în opinia mea, este mult mai curat, prin utilizarea
fetch()
API. Asta o modalitate modernă de a pune în aplicare cererile de rețea. In cazul tau, din moment ce ai deja un element de formular putem pur și simplu l utilizați pentru a construi cererea noastră.Nu's, de asemenea, să prezinte evenimentul, care pot fi declanșate de astfel $("#form_id").submit(). Te'd utilizați această metodă dacă formularul este bine reprezentat în HTML deja. Te'd citit în pagina, popula formă de intrări cu chestii, apoi sună .submit(). L'll utilizează metoda și de acțiune definite în formularul de's a declarației, astfel încât să don't nevoie pentru a copia în javascript.
exemple