2014-08-27 30 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 2014-08-27 20:50:17

+0

那麼,我應該如何替換數據:新的FormData(這個),爲什麼它在Chrome,Opera和Safari中工作? :) – BucketOfIce 2014-08-27 20:54:55

回答

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 2014-08-27 21:06:45

+0

你可以進入firebug,在這個函數內部放置一個斷點,然後逐步查看它是否正確執行ajax調用,並且數據對象是你期望的? – Evan 2014-08-27 21:47:09

+0

我從來沒有用過Firebug。但是,我使用以下方法創建了自定義表單數據: var data = new FormData(); data.append('currentPage','1'); 這適用於所有瀏覽器。所以IE和Firefox中的表單數據肯定有問題。 :/ – BucketOfIce 2014-08-27 22:23:38