obecnie posiadam:
$.ajax({
type: 'POST',
url: this.action,
data: $(this).serialize(),
});
Działa to dobrze, jednak chciałbym dodać wartość do danych, więc spróbowałem
$.ajax({
type: 'POST',
url: this.action,
data: $(this).serialize() + '&=NonFormValue' + NonFormValue,
});
Ale to nie zostało poprawnie opublikowane. Jakieś pomysły na to, jak dodać element do ciągu serializacji? To jest globalna zmienna strony, która nie jest specyficzna dla formularza.
serialization
jquery
Wyjście
źródło
źródło
'&NonFormValue=' + NonFormValue
?Odpowiedzi:
Zamiast
prawdopodobnie chcesz
Należy uważać, aby zakodować w adresie URL wartość,
NonFormValue
jeśli może ona zawierać znaki specjalne.źródło
encodeURIComponent
aby upewnić się, żeNonFormValue
nie ma żadnych znaków specjalnychChociaż odpowiedź matta b zadziała, możesz również użyć jej
.serializeArray()
do pobrania tablicy z danych formularza, zmodyfikowania jej i użyciajQuery.param()
do konwersji na postać zakodowaną w postaci adresu URL. W ten sposób jQuery obsługuje serializację dodatkowych danych za Ciebie.źródło
po pierwsze nie powinien
być
a po drugie możesz użyć
lub jeśli akcja zawiera już jakiekolwiek parametry
źródło
NonFormValue
zostanie wysłany jako parametr adresu URL, a nie w opublikowanych danych. Może to nie być idealne, jeśli a) cokolwiek działa po stronie serwera, oczekuje, że zostanie wysłane (np. Użycierequest.POST
zamiastrequest.REQUEST
w Django), lub b)NonFormValue
jest czymś, co nie powinno pojawiać się na pasku adresu URL ani w historii ani ze względów bezpieczeństwa, ani z powodu jest to wartość przejściowa.Najpierw dodaj element, a następnie serializuj:
źródło
Nie zapominaj, że zawsze możesz:
w twojej rzeczywistej formie, co może być lepsze dla twojego kodu w zależności od przypadku.
źródło
Możemy zrobić:
Na przykład:
źródło
Możesz napisać dodatkową funkcję do przetwarzania danych formularza i powinieneś dodać swoje dane nonform jako wartość danych w formularzu. Zobacz przykład:
Następnie dodaj to jquery do przetwarzania formularza
źródło
to lepiej:
źródło