Autor | Zpráva | ||
---|---|---|---|
David1256 Profil |
#1 · Zasláno: 2. 9. 2014, 18:41:44
Dobrý den,
odesílám formulář Ajaxem http://malsup.com/jquery/form/. Ajaxem se tedy zavolá skript ve <form action="skript.php">. Nevíte někdo, jak otevřít pomocí skript.php nové okno prohlížeče? A odpověď neotevírej to Ajaxem mi moc nepomůže .). V tom skriptu jsou totiž různé ify a někdy je potřeba otevřít nové okno a někdy ne, ale nevím, jak to udělat. Nějaký nápad? Děkuji. |
||
Destiny_1 Profil |
No tak třeba mě napadá způsob, který není moc elegantní, ale můžeš použít třeba něco takového
$.ajax({ type: 'POST', url: 'skript.php', data: { input: $("input").val() }, success: function (data) { eval(data) } }); Nebo jednoduše otevřít nové okno, podle výsledku co vrátil do prohlížeče php script if (data==neco) { window.open("http://www.w3schools.com"); } |
||
mimochodec Profil |
David1256:
„Nevíte někdo, jak otevřít pomocí skript.php nové okno prohlížeče?“ Nelze. Ale v tom php můžeš echem něco vypsat a pak to načíst v JS pomocí xmlhttp.responseText a reagovat podle potřeby.
|
||
Chamurappi Profil |
#4 · Zasláno: 2. 9. 2014, 20:56:48
Reaguji na Davida1256:
„A odpověď neotevírej to Ajaxem mi moc nepomůže“ Zatímco odpověď „nejde to AJAXem“ ukončí tvé trápení. Blokovače popup oken v prohlížečích fungují zpravidla tak, že vyhodnocují původ události. Uživatelské události (třeba onclick nebo něco klávesnicového) mají právo okno otevřít, jiné druhy událostí (načtení stránky, časovače) toto právo nemají. Událost vyvolaná přijetím odpovědi ze serveru jednoznačně patří do té druhé skupiny.
Jsem si tedy skoro jistý, že tě žádný druh eval u nezachrání.
„a někdy je potřeba otevřít nové okno a někdy ne“ Okno otevřené skriptem či target em může skript zavřít.
Proč je vůbec potřeba někdy otevřít nové okno? Co v něm je, že to musí být okno? |
||
Destiny_1 Profil |
Chamurappi
Jsem si tedy skoro jistý, že tě žádný druh evalu nezachrání. eval jsem použil jen kvůli tomu, protože jsem si myslel, že zároveň do stránky přidává nějaký text z php a má s tím problém.
|
||
David1256 Profil |
#6 · Zasláno: 2. 9. 2014, 21:34:27
Chamurappi:
Mám formulář, kde se vyplní nějaké údaje + kontaktní informace a pod ním jsou dvě tlačítka. Jedno odešle údaje z vyplněného formuláře na mail a druhé by mělo otevřít novou záložku, kde se vypíšou data z formuláře ve formátu pro tisk. |
||
Chamurappi Profil |
#7 · Zasláno: 2. 9. 2014, 22:33:02
Reaguji na Davida1256:
Pokud nemá vliv, co řekne server, proč potřebuješ otevřít okno z AJAXu? Proč jednoduše při kliku na tlačítko nepřenastavíš this.form.target ?
|
||
David1256 Profil |
Potřebuji ten formulář odeslat Ajaxem, protože když ho neodešlu Ajaxem reloadne se mi stránka a jelikož ten formulář je X-tý krok JS aplikace, která drží nějaká data a nechci je po odeslání formuláře ztratit díky relaodu, odesílám proto Ajaxem. S tím targetem to je dobrá myšlenka, nicméně toto mi nefunguje:
<input type="submit" onClick="noveOkno(this);" class="odeslatButton"/> <script> function noveOkno(el){ el.form.target="_blank"; } </script> Asi to přebije ten AjaxForm či co... |
||
Chamurappi Profil |
#9 · Zasláno: 2. 9. 2014, 23:43:52
Reaguji na Davida1256:
Používáš-li cizí knihovnu, jejímž útrobám nerozumíš, máš buď možnost prostudovat si dokumentaci, zda autor na tvoji situaci nepomyslel, nebo se vzdát. Tvá situace je, že potřebuješ vyvolat AJAXové odeslání pouze při kliku na to druhé tlačítko, odkaz na dokumentaci je nahoře, držím ti palce. „jelikož ten formulář je X-tý krok JS aplikace, která drží nějaká data“ Proč je raději nedrží normálně server v session? Mohlo by to být imunní i proti nehodám. |
||
Časová prodleva: 11 let
|
0