Код выполняется несколько раз в IE / Opera - PullRequest
4 голосов
/ 23 июля 2010

У меня есть проблема на моей странице с кодом, выполняющимся несколько раз в IE и Opera, хотя он работает в FF, Chrome и Safari. Я использую последнюю версию jQuery, плагин валидации и плагин формы. Мой код происходит от следующего HTML:

<form action="/case_study/php/survey_submit.php" id="mt_survey" method="post">
...
...             
<fieldset id="submit_button_box">
    <input id="submit_button" type="submit" value="Submit Case Data" />
</fieldset></form>

Когда я нажимаю кнопку отправки, запускается следующий jquery:

  $('#mt_survey').submit(function() {
    if ( ($("#mt_survey").valid() == true) || confirm("Unfinished form, continue saving as temporary?")) {
      $('#mt_survey').ajaxSubmit({
         data: {table: "mt_data"},
         target: '#messages',
         success: function() { 
           $('#messages').fadeIn('slow');
           $( 'html, body' ).animate( { scrollTop: 0 }, 0  );}
          });
        }
    return false;
   });

Теперь это работает, когда я нажимаю кнопку отправки в первый раз. В этот момент форма очищается для следующего набора данных. Это делается с помощью следующего кода.

  $('#clear_form').click(function() {
    $("#mt_survey").resetForm();
    $("#messages").replaceWith('<div id="messages"></div>');
    $("#messages").hide();
    $("#escort_div").hide();
    $("#transport_a_div").hide();
    $("#transport_l_div").hide();
    $("#item_div").hide();
    $("#item2_div").hide();
    $("label.error").hide();
    $("#correction_button").attr('disabled', 'disabled');
    $("#submit_button").attr('disabled', '');
  });

Теперь, когда это сделано, форма get снова заполняется, и снова нажимается на submit. Но на этот раз в IE и Opera его код запускается несколько раз. Я точно знаю, что он запускается несколько раз, так как я проверил, поместив туда оповещения, но в основном он вызывает мой файл «survey_submit.php» несколько раз и вставляет данные в MySQL. Есть идеи почему? Это мучило меня долгое время, и я не вижу причин, почему это так.

Ответы [ 2 ]

0 голосов
/ 28 августа 2014

IE и Opera кешируют данные и используют данные кеша, поэтому вы не сможете позвонить в следующий раз

Измените код на:

$('#mt_survey').ajaxSubmit({
     cache : false,
     data: {table: "mt_data"},

Я уже сталкивался с этимпроблема, надеюсь, это поможет вам

0 голосов
/ 24 января 2012

Вам действительно нужно использовать плагин формы?Вероятно, вы могли бы получить тот же эффект, используя

$('#mt_survey').submit(function() {
   var $this = $(this);
   if ( ($this.valid() == true) || confirm("Unfinished form, continue saving as temporary?")) {
     $.ajax({
        data: $this.serialize + "&table=mt_data",
        success: function(response) { 
          $('#messages').html(response).fadeIn('slow'); //you may also need to do some processing of the response data before injecting as html
          $( 'html, body' ).animate( { scrollTop: 0 }, 0  );}
         });
       }
   return false;
  });

И тогда отладка будет проще

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...