2013-08-16 38 views
9

さて、私は短いでしょう。私はデータベースに値を入れているこのスクリプトを持っています。 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()); 

答えて

17

あなたが故に

で、イベントハンドラのパラメータとして eventを定義していませんでした
event.preventDefault(); 

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

私はイベントハンドラにeventパラメータを追加することをお勧めしたい:

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

追加の違いがあります:あなたはeventパラメータを定義しない場合、eventネイティブイベントを指しますChromeのオブジェクトで、the event object which jQuery passes to the handlerとは異なります。

jQueryによるイベント処理の詳細については、these articlesを参照することをお勧めします。

+0

これが最も正しい答えです。 – FloatingRock

+0

私は同じ問題を抱えています。 'event.preventDefault()'を使わずにlocalhostで動作しますが、awsサーバでは動作しません。どんな考え? –

+0

P.S:それはそれを加えて働いた。 'e.preventDefault()'を追加せずにlocalhostで動作させる方法が不思議です –

7

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

+0

... – Dani

1

Firefoxが$ajax非同期呼び出しを紛失したため、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またはにアップグレードすると、上記のコードは動作します。

関連する問題