【问题标题】:$.ajax post working in Chrome, but not in Firefox$.ajax 帖子在 Chrome 中有效,但在 Firefox 中无效
【发布时间】:2016-11-23 16:48:21
【问题描述】:

好的,我会很短。我有这个将值放入数据库的脚本。它在 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());

【问题讨论】:

    标签: jquery ajax firefox


    【解决方案1】:

    您没有将event 定义为事件处理程序的参数,因此在

    event.preventDefault();
    

    浏览器尝试在全局范围内查找event。 Chrome 恰好在全局范围内提供事件对象(因此没有错误),但 Firefox 没有(因此出现错误)。

    我建议将event 参数添加到事件处理程序中:

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

    还有一个区别:如果不定义event参数,event将引用Chrome中的native事件对象,这与the event object which jQuery passes to the handler不同。

    要了解有关使用 jQuery 处理事件的更多信息,我建议通过 these articles

    【讨论】:

    • 我遇到了同样的问题。它在 localhost 中工作,而不使用 event.preventDefault(),但在 aws 服务器中,它不工作。知道为什么吗?
    • PS:它通过添加它起作用。想知道它如何在不添加 e.preventDefault() 的情况下在 localhost 中工作
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      Firefox v49.0.2 及更高版本已修复缺少$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 或更高版本时,上述代码将起作用。

      【讨论】:

        猜你喜欢
        • 2016-02-19
        • 2023-04-01
        • 1970-01-01
        • 2022-01-23
        • 1970-01-01
        • 2020-04-04
        • 2011-03-16
        • 2015-06-11
        • 2018-07-05
        相关资源
        最近更新 更多