2012-10-11 3 views
0

나는이 작은 AJAX 호출이 작동하지 않습니다.jQuery를 AJAX의 성공은 파이어 폭스

"mix-bricks-submit"제출 단추를 다시 누르면 다시 호출이 실행되지 않습니다.

+0

'async : false'를 제거하십시오. Ajax가 비동기 동기식으로 시작하지 않습니다. – AbstractChaos

+0

이 JavaScript와 함께 사용되는 HTML을 추가 할 수 있습니까? – andyb

답변

1

설정 url 매개 변수는 w하지만 그렇게 하나

$('#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"); 
       }); 
      } 
     }); 
}); 

선택하지 않습니다 hy는 ajax 문을 두 번 실행합니다. 나는 확신 할 수 없다.

0

이 시도 :

.load()에 따르면

$.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"); 
      }); 
+0

흠 ..이 여전히 작동하지 않습니다. .alert ("Test")를 .load 함수에 넣으면 FF로 트리거되지만 build.php는 다시로드되지 않습니다. –

0

이것은 원래의 asker가 편집 한 것으로 추가되었지만 답변이 아니라 편집이어야하므로 커뮤니티 위키 답변으로 변환되었습니다.

해결책 :

$('#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"); 
     }); 
    } 
    }); 
}); 

나는 새로운 이미지 이름을 FF와 IE에서 캐시 문제를 무시하는 것 같다 양식이 제출 될 때마다 강제로 밀리 세컨드의 값이 쿼리에 tstamp 매개 변수를 삽입하여 .