2016-10-04 169 views
1

我試圖通過AJAX提交一個google doc表單,但它不工作。它一直試圖將表單發送到我作爲GET的頁面,而不是我嘗試的Google表單POST url請求。AJAX表單發送GET&發送表單到當前頁面而不是POST jquery

我的形式看起來像

<form id="ss-form" target="_self" onsubmit="" action=""> 

..... 
<input type="submit" name="submit" value="Submit" id="ss-submit" class="jfk-button jfk-button-action "> 
</form> 

和我的JS是這樣的:

<script> 
$('#ss-form').submit(function(e) { 
    e.preventDefault(); 
    $.ajax({ 
     url: "https://docs.google.com/a/example.com/forms/d/e/1FAI324B_-XUt0dQ-0AmlfwdfUu5dbEefwjVNud_hNlOKQ/formResponse", 
     data: $(this).serialize(), 
     type: "POST", 
     dataType: "xml", 
     success: function(data) { 
      console.log('Submission successful'); 
     }, 
     error: function(xhr, status, error) { 
      console.log('Submission failed: ' + error); 
     } 
    }); 
}); 
</script> 

但這只是重新加載我的網頁像example.com?entry.1850833=test,它是作爲一個GET請求。

任何想法爲什麼會發生這種情況?我如何通過AJAX代碼發送它,並停止表單在當前頁面刷新爲GET?

+0

可能重複的[event.preventDefault()與返回false](http://stackoverflow.com/questions/1357118/event-preventdefault-vs-return-false) –

+0

我試過這個答案,它沒有有所作爲@MikeC – user1180888

+1

您是否嘗試刪除'onsubmit =「」'?你是否把'return false;'添加到你的handler的* end *中?您是否在添加處理程序之前等待DOM準備就緒? –

回答

0

嘗試添加回假

$.ajax({ 
    url: "https://docs.google.com/a/example.com/forms/d/e/1FAI324B_-XUt0dQ-0AmlfwdfUu5dbEefwjVNud_hNlOKQ/formResponse", 
    data: $(this).serialize(), 
    type: "POST", 
    dataType: "xml", 
    success: function(data) { 
     console.log('Submission successful'); 
    }, 
    error: function(xhr, status, error) { 
     console.log('Submission failed: ' + error); 
    } 
}); 
return false; 
+0

不,它只是通過獲取請求發送到同一頁面。 JS應該在形式之後嗎?我擁有它在我的頁面頂部。 – user1180888

+1

是的,除非你用$(document).ready或類似的東西包裝它。如果腳本位於表單之前,那麼當您嘗試註冊提交處理程序時,表單尚不存在,並且瀏覽器的默認行爲將發生。 – fistuks

+0

謝謝@fistuks,那就是問題所在。頂部有腳本。謝謝!! – user1180888

0

刪除「_self」,應該沒有目標,因爲你通過AJAX提交表單。