さて、私は短くなります。データベースに値を入れるこのスクリプトがあります。 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());
イベントハンドラーのパラメーターとしてevent
を定義しなかったため、
event.preventDefault();
ブラウザはグローバルスコープでevent
を検索しようとします。 Chromeはたまたまグローバルスコープでイベントオブジェクトを提供します(そのためエラーはありません)が、Firefoxは提供しません(したがってエラーです)。
イベントハンドラーにevent
パラメーターを追加することをお勧めします。
$("#dodaj").click(function(event){
event.preventDefault();
// ...
});
追加の違いがあります。event
パラメーターを定義しない場合、event
はnativeを参照します jQueryがハンドラーに渡すイベントオブジェクト とは異なるChromeのイベントオブジェクト。
JQueryによるイベント処理の詳細については、 これらの記事 を参照することをお勧めします。
フォームの送信時にトリガーされた場合、FFで非同期呼び出しが機能しない可能性があります。 ajax呼び出しにasync:falseを追加すると、機能します。それか、またはCORSを介して修正する必要があるクロスドメインコールがあるという事実です。
$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以降にアップグレードすると機能します。