0

私はこの小さなAJAX呼び出しを持っています:

    $('#brick-mixer-form').submit(function(e) { 
        e.preventDefault();

        $("#mix-bricks-submit").addClass("load");
        $("#mix-bricks-submit").attr("value", "Blander sten..");

        var form_data = $("#brick-mixer-form").serialize()

        $.ajax({
           type: "GET",
           url: "build.php",
           data: form_data,
           dataType: 'text',
           async: false,
           success: function(data) {
              $(".active").attr('src', 'build.php?'+form_data+'').load(function() {
              $("#mix-bricks-submit").removeClass("load");
              $("#mix-bricks-submit").attr("value", "Bland igen");
              $("#bricks-selected").attr("value", form_data);
              $("#pdf_saver").css("display", "block");
           });
        }
     });
});

Google Chromeではこれは完璧に機能しますが、Firefoxでは一度しかトリガーできません。

送信ボタン" mix-bricks-submit"をもう一度押すと、2回目の通話は実行されません。

4

3 に答える 3

1

これを試して:

設定

$.ajax({
           type: "GET",
           url: "build.php",
           data: form_data,
           dataType: 'text',
           async: false,
           cache: false,
           success: function(data) {
              $(".active").attr('src', 'build.php?'+form_data+'').load(function() {
              $("#mix-bricks-submit").removeClass("load");
              $("#mix-bricks-submit").attr("value", "Bland igen");
              $("#bricks-selected").attr("value", form_data);
              $("#pdf_saver").css("display", "block");
           });
于 2012-10-11T10:25:31.927 に答える
1

.load()によると、urlパラメーターはオプションではないため、

$('#brick-mixer-form').submit(function(e) { 
        e.preventDefault();

        $("#mix-bricks-submit").addClass("load");
        $("#mix-bricks-submit").attr("value", "Blander sten..");

        var form_data = $("#brick-mixer-form").serialize()

        $.ajax({
           type: "GET",
           url: "build.php",
           data: form_data,
           dataType: 'text',
           async: false, //I would avoid forcing synchronous
           success: function(data) {
              //$(".active").attr('src', 'build.php?'+form_data+'').load(function() {
              $("#mix-bricks-submit").removeClass("load");
              $("#mix-bricks-submit").attr("value", "Bland igen");
              $("#bricks-selected").attr("value", form_data);
              $("#pdf_saver").css("display", "block");
           //});
           }
        });
});

また

$('#brick-mixer-form').submit(function(e) { 
        e.preventDefault();

        $("#mix-bricks-submit").addClass("load");
        $("#mix-bricks-submit").attr("value", "Blander sten..");

        var form_data = $("#brick-mixer-form").serialize()

        $.ajax({
           type: "GET",
           url: "build.php",
           data: form_data,
           dataType: 'text',
           async: false,//I would avoid forcing synchronous
           success: function(data) {
              $(".active").load('build.php',form_data,function() {
                $("#mix-bricks-submit").removeClass("load");
                $("#mix-bricks-submit").attr("value", "Bland igen");
                $("#bricks-selected").attr("value", form_data);
                $("#pdf_saver").css("display", "block");
              });
           }
        });
});

なぜajaxステートメントを2回実行するのかわかりませんが、

于 2012-10-11T11:17:06.987 に答える
0

これは元の質問者によって編集として追加されました。編集ではなく回答である必要があるため、コミュニティwikiの回答に変換しました。

解決:

    $('#brick-mixer-form').submit(function(e) { 

       e.preventDefault();
       var nowis = new Date();

       $("#mix-bricks-submit").addClass("load");
       $("#mix-bricks-submit").attr("value", "Blander sten..");

       var form_data = $("#brick-mixer-form").serialize()

       $.ajax({
          type: "GET",
          url: "build.php",
          data: form_data,
          dataType: 'text',
          success: function(data) {

          $(".active").attr('src', 'build.php?'+form_data+'&tstamp='+ nowis.getMilliseconds() +'').load(function() {
          $("#mix-bricks-submit").removeClass("load");
          $("#mix-bricks-submit").attr("value", "Bland igen");
          $("#bricks-selected").attr("value", form_data);
          $("#pdf_saver").css("display", "block");
        });
     }
   });
});

ミリ秒の値でクエリにパラメータを挿入することによりtstamp、フォームが送信されるたびに新しい画像名を強制します。これは、FFとIEのキャッシュの問題を無効にしているようです。

于 2015-06-23T18:39:11.857 に答える