2012-02-16 21 views
7

Mam istniejący formularz HTML, który próbuję zaktualizować, aby użyć jQuery.load(). Jak mogę przekazać wszystkie elementy formularza jako parametry POST, zamiast określać parametry, które należy przekazać?jquery.load() na POST wszystkie elementy formularza, zamiast określać, co POST

Elementy formularza są tworzone dynamicznie według skryptu, a liczba elementów oraz nazwa elementów różnią się znacznie w stopniu, w jakim nie jest praktyczne określanie parametrów przekazywanych za pośrednictwem AJAX/POST. Czy istnieje prosty sposób przekazania do jQuery.load() wszystkich elementów w tagach <form></form>, tak jakby formularz został przesłany tradycyjnie?

Odpowiedz

18

Można użyć .serialize() do serializowania wszystkich danych wejściowych formularza do przesłania wraz z wywołaniem jQuery.load().

$('form').serialize() 

Na przykład, używając jQuery.load() (tylko robi się chyba przekazać go do obiektu dla danych, następnie po)

$.load(
    'postTo.php', 
    $('#yourFormId').serialize(), 
    complete(responseText, textStatus, XMLHttpRequest){ 
     //do your processing after the fact 
})) 

Korzystanie, jQuery.ajax(), można je POST

$.ajax({ 
    'url': 'postTo.php', 
    'type': 'POST', 
    'data': $('#yourFormId').serialize(), 
    'success': function(result){ 
     //process here 
    } 
}); 

Zobacz: http://api.jquery.com/jQuery.ajax/

+0

Jak mogę zastosować to w sposób, który powielałby normalną funkcjonalność wysyłania formularza za pomocą POST? Próbuję uzyskać wyniki w tej samej tablicy formatu ($ _POST), która zawiera zagnieżdżone tablice. –

+0

Ah, nie będziesz w stanie "POST" z 'load()', ponieważ używa 'GET'. Będziesz chciał użyć '$ .ajax' lub czegoś innego, aby zmienić metodę na' POST'. Zaktualizuję mój pierwotny wpis, aby to pokazać. – derekaug

+1

Czy rozważałeś użycie $ .post()? –

25

Łatwy: Gdy zbierasz dane formularza i mijasz je jako drugi parametr do load(), użyj serializeArray(data) i nie używaj serialize(data), jak zaleca zalecana obecnie odpowiedź.

serialize() zwraca ciąg znaków, podczas gdy serializeArray() zwraca obiekt. load() wysyła POST, jeśli dane są obiektem. Jeśli dane są ciągami, load() wysyła GET.

+2

To powinna być właściwa odpowiedź. – user2233706

+0

obie odpowiedzi bardzo pomogły. Używanie $ .load było w stanie zmienić dany div, używając wywołania ajaxowego bardzo łatwo, ale nie mógł znaleźć tego samego w $ .ajax. – Babulu

Powiązane problemy