2012-06-06 51 views
0

我正在使用下面的代碼發佈表單,但沒有得到傳遞給代碼背後的表單數據?通過jquery發送表單不傳遞數據

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

      $("#Submit").live("click", function() { 
       var formData = $("#CreateOrder").serialize(); 
       $.post("/Orders/SaveExtra", formData, function (result) {      
        if (result.created) { 
         alert("Saved successfully!"); 
        } else { 
         alert("Error!"); 
        } 
       });     
      }); 
     }); 
    </script> 

    <input id='Submit' type='submit' value='Save Extra' style="height: 30px; width: 130px; margin-top:8px;margin-right: 15px; float:right " /> 

<form id="CreateOrder" method="post" action="/Orders/Create" enctype="application/x-www-form-urlencoded" >  


... 

</form> 

我有調用不同的方法來保存一個主要形式,所以我需要兩個的提交,但它似乎並沒有張貼表單中的數據?

+0

嘗試檢查AJAX調用之前FORMDATA價值 - 爲什麼你的提交按鈕是表單之外? – fcalderan

+0

嗨,我有一個在表單內提交輸入,另一個按鈕outisde,因爲他們都調用同一控制器內的不同方法。 – okenshield

+0

@okenshield你可以同時保存兩個提交按鈕。事實上保持兩個提交按鈕的形式是正確的方法。此外,一旦你將這個提交按鈕放在你的表單中(兩個提交按鈕的ID應該是相同的),這可能會解決你的問題。或者嘗試使用'console.debug(formData)'打印形式數據。這會告訴你實際上你想要發佈的內容。希望它在那裏是空的。 –

回答

0

在帖子的第一個參數中,您需要指定服務的完整路徑。例如:

$.post("http://localhost:8080/Orders/SaveExtra", formData, function(result){...} 

在一個側面說明,如果你的jQuery的版本高於1.7,建議您更改.live()用。對(),因爲.live()已過時。

+0

嗨,它在控制器中調用方法ok,但數據似乎爲空,這就是爲什麼我認爲它可能需要live()? – okenshield

+0

這似乎沒有區別。 – okenshield

0

如果您收到的數據是JSON,我會將該值添加到POST調用中作爲datatype值。

$.post("/Orders/SaveExtra", formData, function (result) {      
      if (result.created) { 
       alert("Saved successfully!"); 
      } else { 
        alert("Error!"); 
      } 
    },"json"); 

,如果你正在使用jQuery 1.7+,我建議你改用on而不是live。所以,你的代碼看起來像

$(function(){ 
     $(document).on("click","#Submit",function(e){ 
      e.preventDefault(); 
      var formData = $("#CreateOrder").serialize(); 
      $.post("/Orders/SaveExtra", formData, function (result) {      
       if (result.created) { 
        alert("Saved successfully!"); 
       } else { 
        alert("Error!"); 
       } 
     },"json"); 
     }); 
}); 
+0

嗨,謝謝你的帖子,但點擊似乎並不火。 – okenshield

+0

@okenshield:您是否在螢火蟲控制檯中看到任何腳本錯誤? – Shyju

+0

@okenshield:其實我錯過了我的例子中的序列化語句。這可能會引發腳本錯誤。現在更新我的答案。 – Shyju