C# týden ITnetwork Flashka zdarma
Akce! Pouze tento týden sleva až 80 % na kurzy C# .NET. Lze kombinovat s akcí 50 % bodů navíc na prémiový obsah!
Brno? Vypsali jsme pro vás nové termíny školení Základů programování a OOP v Brně!
Avatar
David Šabacký:7. května 10:46

Ahoj lidi,

má formulář, který zavolá save_json.php a uloží do JSONu hodnoty. Bohužel mi to bez problémů chodí ve Chrome, ale nechodí ve Firefoxu, kde se do JSON souboru nezapíše update.

V console.log dostanu jak ve FF, tak v Chrome hodnoty jak mají být. Vypadá to, že se mi vůbec ve FF nepustí ten save_json.php, chybové hlášky mi to nedává žádné.

Kod posílám níže.

Díky za pomoc

Zkusil jsem:

console.log(oper, file, key, value);

        $.ajax({

                        url: "save_json.php",
                        type: "post",
                        data: {oper : oper, file : file , key : key, value : value},

                        });
 
Odpovědět 7. května 10:46
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na David Šabacký
Daniel Vítek:7. května 11:01

Zkus si to zdebugovat přes developer tools. Je tam záložka Network na které vidíš jaké requesty tam lítají.

Nahoru Odpovědět 7. května 11:01
Na síti působím už pěknou řádku let. Pokud budeš něco potřebovat, písni mi, pokusím se ti poradit :)
Avatar
Odpovídá na Daniel Vítek
David Šabacký:7. května 12:44

Je to docela zajímavé, když zavolám ajax a hned po něm :
location.reload();

což potřebuji, protože je tam i nastavení jazykové mutace, tak se v json změna neprojeví, když location.reload(); vynechám, proběhne vždy bez problémů.

D

 
Nahoru Odpovědět 7. května 12:44
Avatar
Odpovídá na David Šabacký
David Šabacký:7. května 13:29

už jsem na to přišel, firefox totiž z nějakého důvodu nedokončí ten ajax a jde reload, proto je potřeba:

$.ajax({

                        url: "save_json.php",
                        type: "post",
                        data: {oper : oper, file : file , key : key, value : value},
                        success: function(data) {
                                        if ( key == "Language"){
                                        reload.location();
                                        }

                                }
                        });

takže udělat reload až po té, co ajax dopadne success

díky za námahu

David

 
Nahoru Odpovědět 7. května 13:29
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na David Šabacký
Peter Mlich:7. května 13:49

'firefox ... nedokončí ten ajax' - ehm? to je preci normalni chovani asynchronniho requestu. Aspon firefox ma default nastaveny asyn typ. Tak mu vnut nastaveni na synchronni, kdyz to chces pouzivat jinak nez pres call-back (funkce v onsucess nebo onerror). A nebo nech to location v callbacku, to je stejne lepsi.

 
Nahoru Odpovědět  +1 7. května 13:49
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na David Šabacký
Daniel Vítek:7. května 14:08

Jak píše Petr – AJAX probíhá asynchronně. To znamená, že prohlíže pošle AJAXový request, nečeká na odpověď a jede dál. Až request přijde zpět, provede se kód ve funkci success.

Editováno 7. května 14:09
Nahoru Odpovědět 7. května 14:08
Na síti působím už pěknou řádku let. Pokud budeš něco potřebovat, písni mi, pokusím se ti poradit :)
Avatar
David Šabacký:10. května 15:30

jo, díky, teď už vím, proč se takto chová ...

 
Nahoru Odpovědět 10. května 15:30
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.