jQuery AJAX无法在Firefox上运行

时间:2015-08-04 11:04:18

标签: php jquery ajax firefox

我有一个函数和一个AJAX调用。单击它后,获取功能和功能正常,警报它显示数据,但之后它不会将数据发送到PHP。知道为什么会在Firefox上出现这种情况?它在IE和Chrome中运行良好。

function siparisolustur() {
    var toplamsiparis = $('.urunrow').length;
    var i = null;
    var siparisid = $("#siparis_id").text();

    var name = $("#siparisad").val();
    var surname = $("#siparissoyad").val();
    var tel = $("#siparistel").val();
    var adres = $("#sepetadres").val();
    var semt = $("#sepetilce").val();
    var sehir = $("#sepetsehir").val();
    var notlar = $("#siparisnotu").val();
    var odeme = $('input[name="odemeyontemi"]:checked').attr("id");

    bilgiDataString = '&siparisid=' + siparisid + '&name=' + name + '&surname=' + surname + '&tel=' + tel + '&adres=' + adres + '&semt=' + semt + '&sehir=' + sehir + '&notlar=' + notlar + '&odeme=' + odeme;

    alert(bilgiDataString);

    $.ajax({
        type: "POST",
        url: "https://www.xxxxx.com/procc/xxxxxxxxxx.php",
        data: bilgiDataString,
        cache: false,
        success: function (html) {

        }
    });

    $("#payForm").submit(function (e) {
        var siparisdurdur = 0;
        var ad = $("#siparisad").val();
        var soyad = $("#siparissoyad").val();
        var tel = $("#siparistel").val();
        var adres = $("#sepetadres").val();
        var ilce = $("#sepetilce").val();
        var sehir = $("#sepetsehir").val();
        var sepeturunadetget = parseInt($("#sepeturunsayisi").text());

        if (ad == "" || soyad == "" || tel == "" || adres == "" || ilce == "" || sehir == "" || sepeturunadetget < 1) {
            siparisdurdur = 1;
        }

        if (ad == "") {
            e.preventDefault();
            $("#siparisad").css("border-    color", "#cd2828")
        } else {
            $("#siparisad").css("border-color", "#d1d2e6");
        }
        if (soyad == "") {
            e.preventDefault();
            $("#siparissoyad").css("border-color", "#cd2828")
        } else {
            $("#siparissoyad").css("border-color", "#d1d2e6");
        }
        if (tel == "") {
            e.preventDefault();
            $("#siparistel").css("border-color", "#cd2828")
        } else {
            $("#siparistel").css("border-color", "#d1d2e6");
        }
        if (adres == "") {
            e.preventDefault();
            $("#sepetadres").css("border-color", "#cd2828")
        } else {
            $("#sepetadres").css("border-color", "#d1d2e6");
        }
        if (ilce == "") {
            e.preventDefault();
            $("#sepetilce").css("border-color", "#cd2828")
        } else {
            $("#sepetilce").css("border-color", "#d1d2e6")
        }
        if (sehir == "") {
            e.preventDefault();
            $("#sepetsehir").css("border-color", "#cd2828")
        } else {
            $("#sepetsehir").css("border-color", "#d1d2e6")
        }
        if (blocksubmit == 1) {
            e.preventDefault();
            $("#personalinfosubmit").fadeOut("fast").fadeIn("fast").fadeOut("fast").fadeIn("fast");
        }
        if (sepeturunadetget < 1) {
            e.preventDefault();
            $("#shoppingcost").css("color", "#cd2828");
            $("#shoppingcost").fadeOut("fast").fadeIn("fast").fadeOut("fast").fadeIn("fast");
        }

        if (blocksubmit == 0 && siparisdurdur == 0) {
            siparisolustur();
        }
    });

2 个答案:

答案 0 :(得分:0)

我解决了问题..在ajax完成处理数据之前提交转到其他页面。我延迟了重定向半秒钟并且它工作了..它关于FF的速度

答案 1 :(得分:0)

我发现您已经发布了解决方案:

  

在ajax完成处理数据之前提交转到其他页面。我将重定向延迟了半秒钟并且工作正常。

说真的,你不应该依赖这样的解决方案。

这样的计时问题被称为竞赛条件&#34;,即两个事件在竞赛中有效地看到哪一个将首先完成;你期望一个人总能获胜,如果他们以错误的顺序完成你就会得到一个错误。

它是一个非常明确定义的错误类别(即使Ajax是相当新的,这种情况自计算机科学开始以来就存在),并且解决方案减速其中一个事件是希望你强迫它永远失败。这总是错误的解决方案。

正确的解决方案通常是在第一个事件完成后触发第二个事件。在您的情况下,这意味着从ajax submit方法中触发success事件。