好的,我会做空的。我有这个脚本,它将值放在数据库中。它在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());
答案 0 :(得分:25)
您没有将event
定义为事件处理程序的参数,因此在
event.preventDefault();
浏览器尝试在全局范围内查找event
。 Chrome碰巧在全局范围内提供事件对象(因此没有错误),但Firefox没有(因此出错)。
我建议将event
参数添加到事件处理程序:
$("#dodaj").click(function(event){
event.preventDefault();
// ...
});
还有一个区别:如果您没有定义event
参数,event
将引用Chrome中的原生事件对象,该对象与{不同{3}}
要了解有关使用jQuery进行事件处理的更多信息,建议您浏览the event object which jQuery passes to the handler。
答案 1 :(得分:7)
如果您在表单提交时触发了异步调用,则可能无法在FF中运行。你可以在你的ajax调用中添加async:false,它会起作用。无论是您是否具有跨域调用,您都必须通过CORS进行修复。
答案 2 :(得分:2)
在Firefox v49.0.2及更高版本中修复了Firefox错过$ajax
异步调用。
$(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或更高版本时,上述代码将起作用。