web-dev-qa-db-ja.com

$ .ajaxの投稿がChromeでは機能するがFirefoxでは機能しない

さて、私は短くなります。データベースに値を入れるこのスクリプトがあります。 Chrome、Safariでは完璧に機能しますが、FirefoxやIEでは機能しません。データが.phpファイルに投稿されておらず、ajaxがまったく起動していないようです。誰かお願いします

これは私のjqueryスクリプトです:

$(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;
});
});

これは私のphpファイルの内容です:

$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());
14
Marko Kavaš

イベントハンドラーのパラメーターとしてeventを定義しなかったため、

event.preventDefault();

ブラウザはグローバルスコープでeventを検索しようとします。 Chromeはたまたまグローバルスコープでイベントオブジェクトを提供します(そのためエラーはありません)が、Firefoxは提供しません(したがってエラーです)。

イベントハンドラーにeventパラメーターを追加することをお勧めします。

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

追加の違いがあります。eventパラメーターを定義しない場合、eventnativeを参照します jQueryがハンドラーに渡すイベントオブジェクト とは異なるChromeのイベントオブジェクト。

JQueryによるイベント処理の詳細については、 これらの記事 を参照することをお勧めします。

26
Felix Kling

フォームの送信時にトリガーされた場合、FFで非同期呼び出しが機能しない可能性があります。 ajax呼び出しにasync:falseを追加すると、機能します。それか、またはCORSを介して修正する必要があるクロスドメインコールがあるという事実です。

8
Tayyab Ali

$ajax非同期呼び出しがないFirefoxは、Firefox v49.0.2以降で修正されています。

$(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;
});
});

上記のコードは、Firefox v49.0.2以降にアップグレードすると機能します。

2