Zimní výprodej Kotlin týden
Pouze tento týden sleva až 80 % na e-learning týkající se Kotlin
40 % bodů zdarma díky naší Zimní akci!

Diskuze: AJAX mi chodí v Chrome, ale nechodí ve Firefox

Aktivity (2)
Avatar
David Šabacký:7.5.2019 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.5.2019 10:46
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na David Šabacký
Daniel Vítek:7.5.2019 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.5.2019 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.5.2019 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.5.2019 12:44
Avatar
Odpovídá na David Šabacký
David Šabacký:7.5.2019 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.5.2019 13:29
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na David Šabacký
Peter Mlich:7.5.2019 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
7.5.2019 13:49
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na David Šabacký
Daniel Vítek:7.5.2019 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.5.2019 14:09
Nahoru Odpovědět
7.5.2019 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.5.2019 15:30

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

 
Nahoru Odpovědět
10.5.2019 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.