/ / Odošlite formulár s ajaxom, ale presmerujte na inú stránku - javascript, jQuery, jQuery-pluginy

Odoslať formulár s ajax, ale presmerovať na inú stránku - javascript, jquery, jquery-plugins

Čo by som mal použiť v html a v jQuery, ak chcem na formulári predložiť (a) spustiť určitý php súbor (url-a); b) presmerovať na inú. (url-b)

Momentálne som implementoval doplnok formulára formulára. http://jquery.malsup.com/form/#getting-started

Ako:

krok a. zahrnuté skripty pre jQuery a formuláre;

krok b. v html, v tvare prvku:

      <form action="url-a.php">
<!--form code inserted here including input elements, etc and submit-->
</form>

krok c. v js, vnútri document ready:

      $("#form").ajaxForm(function() {
$.post("url-a.php", {a: a, b: b});
});

Mal by sa zmeniť jeden z týchto adries URL? predpokladajme, že url-a je tá, o ktorú by sa mal ajax postarať, a chcem presmerovať na url-b ..

Ďakujem!

odpovede:

3 pre odpoveď č. 1
$("#form").ajaxForm(function() {
$.post("url-a.php", {a: a, b: b});
window.location.href="/url-b.php";
});

1 pre odpoveď č. 2

ak chcete, aby sa stránka presmerovala, prečo ju chcete odoslať ajaxly akýkoľvek spôsob, ako môžete v obsluhe úspechu presmerovať na stránku

 $.post("url-a.php", {a: a, b: b},function(){
window.location.href="/page/to/redirect.php";
});

0 pre odpoveď č. 3

vo funkcii "úplná" $.post(..) mali by ste zmeniť umiestnenie prehliadača. S ajaxom nemôžete použiť presmerovanie na strane servera.

 $.post("url-a.php", {a: a, b: b},function(){
window.location.href="/url-b.php";
});

Ak chcete presmerovať skôr, ako má ajaxdokončené, je to možné, ale ťažko. Neviem napríklad, ako to urobiť v PHP. Ide o to, že ak budete okamžite presmerovať (znova by sa malo vykonať pomocou javascriptu), požiadavka sa preruší od klienta. A ak je požiadavka prerušená, server ju tiež zruší. Niekedy je možné spustiť nové vlákno na serveri, ktoré je oddelené od vlákna vlákna, ale ak je žiadosť prerušená skôr, ako sa úplne dostane na server, všetko zlyhá.

Vo všeobecnosti by ste to nemali robiť - je to nesprávny prístup. Buď presmerovať, ani nezačať požiadavku ajax na predchádzajúcej stránke - spustite ju hneď, ako sa načíta nová stránka.

Aktualizácia: Videl som, že potrebujete, aby vaša požiadavka ajaxu trvala hodinu - čo sa nestane - prehliadač vyprší časový limit. Po potvrdení, že je skutočne potrebná jedna hodina, skontroluj to pre asynchrónne úlohy PHP. Môžete začať od $(document).ready(function() {..}); 2. strany