2014-12-27 174 views
0

我這種形式:形式通過Ajax提交不工作

<form method="post" id="userForm" name="userForm" class="form-validate" action="/istuff/index.php/user" > 
<input type="hidden" name="option" value="com_virtuemart"/> 
<input type="hidden" name="view" value="user"/> 
<input type="hidden" name="controller" value="user"/> 
<input type="hidden" name="task" value="saveUser"/> 
<input type="hidden" name="layout" value="edit_address"/> 
<input type="hidden" name="address_type" value="ST"/> 
<button class="button" type="submit" 
</form> 

而且我對這種形式的AJAX腳本:

jQuery(document).ready(function($) { 
    $("#userForm").live("submit", function (event) { 
    event.preventDefault(); 
    var form = $(this); 
    $.ajax({ 
     url: form.attr("action"), // Get the action URL to send AJAX to 
     type: "POST", 
     data: form.serialize(), // get all form variables 
     success: function(result){ 
      // ... do your AJAX post result 
     } 
    }); 
    }); 
}); 

形式運作良好沒有AJAX,但後來我加入這個腳本它不起作用。此外,我試圖去到AJAX調用中使用的鏈接(帶有參數的複製位置(帶有提交的參數的完整鏈接) - 它將我重定向到完全不同的頁面,然後我提交沒有AJAX的表單。

+0

你缺少的數據類型:「???」和contentType:「application/???」在你的ajax調用中 – agentpx 2014-12-27 14:21:08

回答

0

I希望這將這樣的伎倆:解決這個

jQuery(document).ready(function() { 
    $("#userForm").submit(function() { 
    var form = $("$userForm"); 
    $.ajax({ 
     url: form.attr("action"), // Get the action URL to send AJAX to 
     type: "POST", 
     data: form, 
     success: function(result){ 
      // ... do your AJAX post result 
     } 
    }); 
    return false; 
    }); 
}); 
1

一種方法是:

1)在「形式」的聲明刪除「行動」屬性和更改按鈕,一個普通按鈕(不提交)

2)在jQuery ajax調用中,直接提供網址。

$.ajax({ 
     url: "/istuff/index.php/user", 

它也值得推薦的做法表單提交時禁用按鈕,使它回來一次Ajax響應回來,以防止用戶再次點擊按鈕。您還可以提供進一步的視覺指示,表明請求正在處理中。我喜歡爲此使用blockUI jquery插件。

0

從jQuery 1.7開始,不推薦使用.live()方法。使用.on()附加事件處理程序。

我想你的代碼通過更改下面一行,它的工作,

$("#userForm").on("submit", function (event) {