15

Okay, I'll be short. I have this script which is putting values in database. It's working perfect in Chrome, Safari, but can't make it work in Firefox or IE. It seems that data isn't even being posted to .php file and ajax is not starting at all. Anyone, please?

This is my jquery script:

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

This is the content in my php file:

$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参数,event将引用Chrome 中的原生事件对象,这与 jQuery 传递给 handler 的事件对象不同。

要了解有关使用 jQuery 进行事件处理的更多信息,我建议阅读这些文章

于 2013-08-17T08:11:28.720 回答
9

如果您在表单提交时触发异步调用,则它可能无法在 FF 中工作。您可以将 async:false 添加到您的 ajax 调用中,它会起作用。要么是这样,要么是你有跨域调用,你必须通过 CORS 修复。

于 2015-01-28T17:56:58.490 回答
2

$ajaxFirefox v49.0.2 及更高版本已修复缺少异步调用的 Firefox。

$(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 回答