当我正在研究Asp.Net MVC应用程序时,在我的应用程序中,我使用jQuery.POST
方法提交表单。
e.g。
jQuery.post('/Product/Save', jQuery(document.forms[0]).serialize(),
function (data) { alert('Product Added Successfully.); }
);
在上面的代码段中,我想传递另一个参数..让我们说.. ProductID
。
所以,我的想法是,我想在jQuery(document.forms[0]).serialize()
中同时传递ProductID variable
和jQuery.POST method
,因此我可以在Form and ProductID
中同时获得controller's action method
。
请有人告诉我,我会这样做吗?
先谢谢。
答案 0 :(得分:13)
您可以使用following plugin将表单序列化为JSON对象并添加其他参数:
$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
像这样:
var data = $('form').serializeObject();
data['ProductId'] = '123';
$.post('<%= Url.Action("Save", "Product") %>', data, function (data) {
alert('Product Added Successfully.');
});
答案 1 :(得分:0)
使用Url.Action方法构建您的主叫网址怎么样?您可以通过这种方式包含所需的其他数据。
<%: Url.Action('Save', 'Product', new { "ProductID", your product id }) %>
这将替换jQuery.post方法调用中的硬编码URL。
答案 2 :(得分:0)
怎么样:
var url = '<%= Html.BuildUrlFromExpression<MyController>(c => c.Save(":productId")) %>';
您稍后可以使用帖子网址中的实际值替换该网址。
url.replace(':productId', $productId);