Autor Zpráva
David1256
Profil
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)
    
}
});
A tím by sis mohl vrátit z php scriptu javascript

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
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 evalu nezachrání.

a někdy je potřeba otevřít nové okno a někdy ne
Okno otevřené skriptem či targetem 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
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
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
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.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0