繁体   English   中英

jQuery AJAX在Firefox上不起作用

[英]jQuery AJAX not working on 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();
        }
    });

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

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

在ajax处理完数据之前,Submit转到其他页面。.我将重定向延迟了大约半秒钟,并且它起作用了。

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

这样的时间安排问题被称为“比赛条件”,即两个事件在竞赛中实际上是在看哪一个首先完成。 您期望一个人永远赢,并且如果他们以错误的顺序完成,您会得到一个错误。

这是一个非常明确的错误类别(即使Ajax相当新,自计算机科学开始以来就存在这种情况),解决方案是不要放慢其中一个事件的速度,以希望您强制执行总是输。 这始终是错误的解决方案。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM