15

わかりました、私は短くなります。データベースに値を入れるこのスクリプトがあります。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());
4

3 に答える 3

31

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

event.preventDefault();

eventブラウザはグローバル スコープでルックアップを試みます。Chrome はたまたまグローバル スコープでイベント オブジェクトを提供します (したがってエラーは発生しません) が、Firefox は提供しません (したがってエラーが発生します)。

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

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

eventさらに違いがあります。パラメーターを定義しない場合、 は Chromeのネイティブeventイベント オブジェクトを参照します。これは、jQuery が handler に渡すイベント オブジェクトとは異なります。

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

于 2013-08-17T08:11:28.720 に答える
2

非同期呼び出しがない$ajaxFirefox は、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 以降にアップグレードすると機能します。

于 2016-11-23T08:48:21.147 に答える