我想将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函数?
答案 0 :(得分:0)
如果您想要Javascript格式的强类型或复杂对象
您的控制器
public ActionResult CheckProductVariantToCart(int productVariantId, int shoppingCartTypeId, FormCollection form)
{
//Somthing here
return Json(form);
}
Javascript角
success: function (result) {
console.log(result);
}
答案 1 :(得分:0)
序列化表单是正确的。您可以将其发送到Controller,它将自动绑定到FormCollection。有几点需要注意
var form = $("product-details-form").serialize();
在此选择器中,您需要指定是按类(。)还是ID(#)查找。即$("#product-details-form).serialize();
我猜你是否正在调试你的javascript这个变量没有存储任何东西?现在它正在寻找可能不存在的标签。 Here is another question描述了这一点。
第二,确保表单元素包含name属性。 Serialize只会序列化具有name属性集的元素。
最后,您的表单变量应该包含一个类似于myTextInput=helloworld&name=user1807766
的字符串,该字符串将在服务器上更改为FormCollection。