Javascript 通过Jquery过账表单未传递数据

Javascript 通过Jquery过账表单未传递数据,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我正在使用以下代码发布表单,但没有将表单数据传递给代码隐藏 <script type="text/javascript"> $(document).ready(function () { $("#Submit").live("click", function () { var formData = $("#CreateOrder").serialize(); $.post("/

我正在使用以下代码发布表单,但没有将表单数据传递给代码隐藏

 <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>

$(文档).ready(函数(){
$(“#提交”).live(“单击”),功能(){
var formData=$(“#CreateOrder”).serialize();
$.post(“/Orders/SaveExtra”),formData,函数(result){
if(result.created){
警报(“保存成功!”);
}否则{
警报(“错误!”);
}
});                
});
});
...

我有一个主表单,它调用另一个方法来保存一个,所以我需要两个提交,但它似乎没有从表单中发布数据?

在post的第一个参数中,您需要指定服务的完整路径。例如:

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

另一方面,如果您的jquery版本高于1.7,建议您将.live()改为.On(),因为.live()已被弃用。

如果您收到的数据是
JSON
,我会将其作为
数据类型
值添加到POST调用中

   $.post("/Orders/SaveExtra", formData, function (result) {                    
           if (result.created) {
                alert("Saved successfully!");
            } else {
                   alert("Error!");
            }
   },"json");
如果您使用的是jquery1.7+,我建议您切换到而不是
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");   
       });
 });

尝试在ajax调用之前检查formData值-以及为什么提交按钮在表单外部?您好,我在表单中有一个提交输入,另一个按钮输出,因为它们都在同一控制器中调用不同的方法。@Okenfield您可以将两个提交按钮保持在同一表单中。事实上,将两个提交按钮都保留在表单中是正确的方法。此外,一旦您将此提交按钮放入表单中(两个提交按钮的ID应相同),这可能会解决您的问题。或者尝试使用
console.debug(formData)
打印表单数据。这会告诉你你到底想发布什么。希望它在那里是空的。嗨,它在控制器中调用方法ok,但数据似乎是空的,这就是为什么我认为它可能需要live()?这似乎没有什么区别。@okenshield:你在firebug控制台中看到任何scrip错误吗?@okenshield:实际上我错过了示例中的serialize语句。这可能引发了一个脚本错误。现在更新我的答案。