簡體   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