一千萬個為什麽

搜索

提交帶有$ .ajax的表單是否自相矛盾?

我目前正在開發一個MVC應用程序,我使用了大量的jQuery和html表單。然而,最近我註意到這些似乎在某種程度上相互矛盾......

For example, I have to prevent the forms default submit to process my AJAX call, otherwise the server gets called twice which leads me to question the idea of using AJAX to submit the form. Wouldn't it be better instead to just hook the $.ajax call to an <input type="button" /> than an <input type="submit" />?

那麽,擁有一個通過ajax提交的表單是否自相矛盾?

最佳答案

您將ajax調用放在提交按鈕上的原因是,如果用戶禁用了javascript,則會有自然的回退。您應該讓後端邏輯檢測請求是ajax請求還是直接提交,並且如果它是ajax則能夠發回數據,或者如果沒有則以“舊學校”的方式處理請求。

編輯:對於上下文。

<form action="/processForm.php" method="POST">
   <input type="submit" value="submit" />
</form>

然後你的jQuery看起來像這樣

$('form').bind('submit', function(e){
    e.preventDefault();
    //do your stuff
});

如果用戶已禁用javascript,則表單將像正常一樣提交到/processForm.php。

您可以使用以下php檢測表單是否通過ajax發送(我不知道您使用的是什麽,但這是我所擁有的)。

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
  /* handle ajax here */
}else{
  /* handle normal submit here */
}

轉載註明原文: 提交帶有$ .ajax的表單是否自相矛盾?