it-swarm.com.de

$ .ajax post funktioniert in Chrome, aber nicht in Firefox

Okay, ich werde kurz sein. Ich habe dieses Skript, das Werte in die Datenbank setzt. Es funktioniert perfekt in Chrome und Safari, kann aber nicht in Firefox oder IE funktionieren. Es scheint, dass Daten nicht einmal in eine .php-Datei gepostet werden und ajax überhaupt nicht startet. Jemand bitte

Dies ist mein Jquery-Skript:

$(document).ready(function(){
$("#dodaj").click(function(){
  event.preventDefault();
  var kategorija = $("#kategorija option:selected").val();
  var si = $("#si").val();
  var hu = $("#hu").val();
  var de = $("#de").val();
  var an = $("#an").val();
  var hr = $("#hr").val();

$.ajax({
    type: "POST",
    url: "dodaj_v_bazo.php",
    data: {"kategorija": kategorija, "si": si, "hu": hu, "de": de, "an": an, "hr": hr},
    success: function(data){
        alert( "Jed uspešno dodana."+data);
    }, 
});
return false;
});
});

Dies ist der Inhalt in meiner PHP-Datei:

$kategorija = $_POST['kategorija'];
$si = $_POST['si'];
$hu = $_POST['hu'];
$de = $_POST['de'];
$an = $_POST['an'];
$hr = $_POST['hr'];

$dodaj_v_bazo = "INSERT INTO jedi (kategorija, si, hu, de, an ,hr) VALUES ('$kategorija', '$si', '$hu', '$de', '$an', '$hr')";
mysql_query($dodaj_v_bazo) or die(mysql_error());
11
Marko Kavaš

Sie haben event nicht als Parameter des Ereignishandlers definiert, daher in

event.preventDefault();

der Browser versucht, im globalen Bereich nach event zu suchen. Chrome stellt das Ereignisobjekt im globalen Bereich bereit (daher kein Fehler), Firefox jedoch nicht (daher ein Fehler).

Ich würde vorschlagen, den Parameter event zum Ereignishandler hinzuzufügen:

$("#dodaj").click(function(event){
    event.preventDefault();
    // ...
});

Es gibt einen weiteren Unterschied: Wenn Sie den Parameter event nicht definieren, verweist event auf das Ereignisereignis native in Chrome. Dies unterscheidet sich von dem Ereignisobjekt, das jQuery an den Handler übergibt. .

Um mehr über die Ereignisbehandlung mit jQuery zu erfahren, empfehle ich, diese Artikel durchzugehen.

24
Felix Kling

Ein asynchroner Aufruf funktioniert möglicherweise nicht in FF, wenn Sie ihn beim Senden des Formulars ausgelöst haben. Sie können Ihrem Ajax-Aufruf async: false hinzufügen, und es funktioniert. Entweder das oder die Tatsache, dass Sie domänenübergreifende Anrufe haben, die Sie über CORS beheben müssen.

7
Tayyab Ali

Der Firefox, dem der async-Aufruf $ajax fehlt, wurde in Firefox v49.0.2 und höher behoben.

$(document).ready(function(){
$("#dodaj").click(function(){
  event.preventDefault();
  var kategorija = $("#kategorija option:selected").val();
  var si = $("#si").val();
  var hu = $("#hu").val();
  var de = $("#de").val();
  var an = $("#an").val();
  var hr = $("#hr").val();

$.ajax({
    type: "POST",
    url: "dodaj_v_bazo.php",
    data: {"kategorija": kategorija, "si": si, "hu": hu, "de": de, "an": an, "hr": hr},
    success: function(data){
        alert( "Jed uspešno dodana."+data);
    }, 
});
return false;
});
});

Der obige Code funktioniert, wenn Sie ein Upgrade auf Firefox v49.0.2 oder höher durchführen.

1