2014-08-27 1 views
0

У меня странная проблема (которую я искал, но без успеха). Я использую Ajax для отправки формы в PHP-скрипт. Это отлично работает в Chrome, Opera и Safari. Тем не менее, как в IE, так и в Firefox форма отправляется скрипту правильно, но данные формы отсутствуют. Когда POST-данные отсутствуют, я убедился, что скрипт возвращает ошибку. Я пытался найти эту проблему часами, но без везения. Ты моя последняя надежда.Ajax отправляет пустые POST-данные, но ТОЛЬКО в IE и Firefox

Вот код AJAX (с некоторыми Javascript):

<script type="text/javascript"> 
    $(document).ready(function() { 

    $("#latestNewsForm").on('submit', function(event) { 
    event.preventDefault(); 

    $.ajax({ 
     url   : "http://devserver/site/php/getLatestArticles.php", 
     type  : "POST", 
     data  : new FormData(this), 
     contentType : false, 
     cache  : false, 
     processData : false 
    }).done(function (data) { 
     $("#formResponse").html(data); 
    }); 

    }); 
    }); 
    </script> 

А вот форма:

<form id="latestNewsForm" method="post"> 
    <input type="submit" name="currentPage" id="firstPage" value="1"> 
</form> 

Большое спасибо заранее!

+0

'FormData (это)' вот почему. – Ohgodwhy

+0

Итак, что я должен заменить данными: новый FormData (это) с и почему он работает в Chrome, Opera и Safari? :) – BucketOfIce

ответ

0

Комментарий Ohgodwhy, скорее всего, правильный.

Поместите свои данные в переменную вне этого вызова ajax. this, вероятно, относится к чему-то другому, чем вы ожидаете в разных браузерах.

Попробуйте это:

$("#latestNewsForm").on('submit', function(event) { 
    event.preventDefault(); 

    var data = new FormData(this); 

    $.ajax({ 
     url   : "http://devserver/site/php/getLatestArticles.php", 
     type  : "POST", 
     data  : data, 
     contentType : false, 
     cache  : false, 
     processData : false 
    }).done(function (data) { 
     $("#formResponse").html(data); 
    }); 

    }); 

Другая возможность может быть связана с кнопки отправки: Submit rollover button not working in FF and IE

+0

Спасибо за ваш ответ! Помещение данных в переменную за пределами вызова Ajax не решило проблему. Я использую Bootstrap 3 на своем сайте, однако кнопка отправки не использует Bootstrap (т. Е. Это стандартная кнопка отправки). – BucketOfIce

+0

можете ли вы пойти в firebug, поставить точку останова внутри этой функции и пройти, чтобы проверить, правильно ли он выполняет вызов ajax и что объект данных является тем, что вы ожидаете? – Evan

+0

Я никогда не пользовался Firebug. Однако я создал пользовательские данные формы, используя: var data = new FormData(); data.append ('currentPage', '1'); Это работало во всех браузерах. Так что определенно что-то не так с данными формы в IE и Firefox. :/ – BucketOfIce

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