通过Jquery发布表单不传递数据

时间:2012-06-06 10:16:55

标签: javascript jquery html ajax

我使用以下代码发布表单但是没有将表单数据传递给后面的代码?

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

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

2 个答案:

答案 0 :(得分:0)

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

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

另外,如果您的jquery版本高于1.7,建议您使用.on()更改.live(),因为.live()已弃用。

答案 1 :(得分:0)

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

   $.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");   
       });
 });