0

我想将 FormCollection 发送到 Ajax 函数。

所以这是我的 Ajax 函数

function checkProductAttribute(productVariantId) 
{

  var form = $("product-details-form").serialize();

      $.ajax({

                    cache:false,
                    type: "POST",
                    dataType: 'html',
                    url: "@(Url.Action("CheckProductVariantToCart", "ShoppingCart"))",
                    data: { "productVariantId": productVariantId, "shoppingCartTypeId": 1, "form": form },
                    success: function (msg) {

                            if(msg == 'true' )
                            {

                    returnVal = true;
                    }
                    else
                    {
                    returnVal = false;
                    }

                    },
                    error:function (){

                     returnVal = false;
                        alert("fail");

                    }  
                });

   return true;
}

这是我的控制器

public bool CheckProductVariantToCart(int productVariantId, int shoppingCartTypeId, FormCollection form)
{   
     //Somthing here
     return true;
}

我的问题是 - 如何发送 FormCollection 认为 Ajax 函数?

4

2 回答 2

0

序列化表单是正确的。您可以将它发送到控制器,它会自动绑定到 FormCollection。有几件事需要注意

var form = $("product-details-form").serialize();

在此选择器中,您需要指定是按 class(.) 还是 id (#) 查找。即$("#product-details-form).serialize();我猜如果你正在调试你的javascript这个变量没有存储任何东西?现在它正在寻找一个可能不存在的标签。这是另一个描述这一点的问题。

其次,确保您的表单元素包含名称属性。序列化只会序列化具有 name 属性集的元素。

最后,您的表单变量应该包含一个字符串,该字符串看起来 myTextInput=helloworld&name=user1807766将在服务器上更改为 FormCollection。

于 2012-12-19T15:54:26.813 回答
0

如果你想要 Javascript 格式的强类型或复杂对象

你的控制器

public ActionResult CheckProductVariantToCart(int productVariantId, int shoppingCartTypeId, FormCollection form)
{   
     //Somthing here

     return Json(form);
}

javascripts

success: function (result) {
  console.log(result);
}
于 2012-12-19T04:51:02.333 回答