2013-08-16 176 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:它的工作是通過添加。不知道如何在localhost中工作而不添加'e.preventDefault()' –

7

如果在表單提交時觸發了異步調用,則FF可能無法正常工作。您可以將async:false添加到您的ajax調用中,它將起作用。無論是或者你有跨域呼叫,你將不得不通過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或更高版本時,上述代碼將起作用。

相關問題