2013-09-28 2 views
0

У меня есть функция:JQuery Ajax не работает в Safari

$(function() { 
        $('form').on('submit', function (e) { 
         $.ajax({ 
          type: 'POST', 
          url: 'conf/send.php', 
          data: $('form').serialize(), 
          success: function() { 
           var form = document.getElementById("Form"); 
           form.submit(); 
          } 
         }); 
         e.preventDefault(); 
        }); 
       }); 

В FF, Chrome, Opera, IE работает хорошо. В Safari не работает. Пробовал добавить:

async: false, 

$.ajaxSetup({ 
    type: 'POST', 
    headers: { "cache-control": "no-cache" } 
}); 

$.ajaxPrefilter(function (options, originalOptions, jqXHR) { 
    options.data = jQuery.param($.extend(originalOptions.data||{}, { 
    timeStamp: new Date().getTime() 
    })); 
}); 

Это не помогло, что может быть сделано? заранее спасибо

ответ

1

Вы уверены, что этот код:

success: function() { 
    var form = document.getElementById("Form"); 
    form.submit(); 
} 

На самом деле вы хотите? Вы говорите JavaScript, что если ваша форма отправляется через AJAX, она должна отправить форму с идентификатором #Form. Возможно, вы должны попробовать следующее:

$(function() { 
    var form = $('form'); 

    form.on('submit', function(e) { 
     e.preventDefault(); 

     $.ajax({ 
      type: 'POST', 
      url: 'conf/send.php', 
      data: form.serialize(), 
      success: function (response) { 
       console.log(response); 
       //var form = document.getElementById("Form"); 
       //form.submit(); 
      } 
     }); 
    }); 
}); 
+0

Почему вы ответили точно так же, как я? – Mina

+0

Правильно, я пишу данные формы, а затем отправляю запрос. Я проверил, что ваша версия не работает. – Forme

+1

@ Ивана показать вашу разметку HTML. – Mark

1

Я думаю, что вы застряли в петле, как вы form.submit() на success()

Попробуйте

$(function() { 
    $('form').on('submit', function (e) { 
     $.ajax({ 
      type: 'POST', 
      url: 'conf/send.php', 
      data: $('form').serialize(), 
     }).done(function(response){ 
      alert(response); 
      return true; 
     }); 
     e.preventDefault(); 
    }); 
}); 

Пример здесь http://fiddle.jshell.net/UKPq5/

Смежные вопросы