2013-05-23 9 views
6

W javascript, mam pewne dane, które chcę wysłać jako post (NIE ajax). Powinien działać tak samo, jak gdyby użytkownik kliknął przycisk przesyłania. Jednak nie mam rzeczywistej formy. Dane są zbierane ze strony na różne zmienne, w tym tablicę, którą koduję jako json.javascript/jquery: tworzenie i publikowanie formularza wirtualnego

Mogę utworzyć formularz html z wyświetlaczem: brak, umieść wartości w tym formularzu, a następnie uruchom przycisk niewidoczny przesyłania. Czy istnieje lepszy sposób?

+0

Czy istnieje jakikolwiek powód, dla którego nie należy korzystać z AJAX? – Bizniztime

+0

Domyślam się, że tego szukasz: http://www.blakepell.com/Main/BlogEntry.aspx?EntryID=30cb4de1-7aab-4798-966b-ab66f629b899 – DmitryK

Odpowiedz

0

najlepszy sposób robi to poza ajax to prawdopodobnie sposób, w jaki opisujesz niewidzialną formę. Dziwny problem jednak.

+0

Wygląda na to, że jest to konsensus. Chcę zaktualizować przeglądarkę, dlatego nie używam AJAX. – user984003

+0

Więc tak, po prostu idź po normalny formularz z niewidocznym formularzem. Lub użyj ajax i wymuś odświeżenie z JS, jak sądzę. – Gavin

6

Jeśli nie chcą/nie mogą używać Ajax, to trzeba to zrobić za pomocą formularza, który ma zamiar odświeżyć swoją przeglądarkę:

$('<form action="urlToServer" method="POST"></form>') 
    .append('<input name="data" value="' + yourJSONData + '" />') 
    .submit() 
; 
4

Plakat "Claudio Bredfeldt" jest na dobrej drodze, aby to zrobić, ale pomija istotne informacje niezbędne do tego działania.

Formularze nie mogą być przesyłane we wszystkich przeglądarkach, chyba że są dołączone do DOM. Więc co trzeba zrobić, to coś więcej tak:

var $form = $('<form action="http://myurl" method="POST">'); 
$form.append('<input name="name" value="bob" />'); 
$form.appendTo($('body')).submit(); 

Opcjonalnie może chcesz dołączyć jakieś css do formy tak, że nie wydaje się, aby użytkownik po spowodować zdarzenie forma postu nastąpić. Możesz także opcjonalnie "usunąć" element formularza po opublikowaniu, aby zdarzenie "wstecz" nie wyświetlało się nieprawidłowo w zależności od zachowania pamięci podręcznej przeglądarki.

Powiązane problemy