IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
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
Odpovídá na David Šabacký
Neaktivní uživatel: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
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
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
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
Odpovídá na David Šabacký
Neaktivní uživatel: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
Neaktivní uživatelský účet
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.