C#Jquery Ajax发布多个数据参数

时间:2013-04-14 06:10:29

标签: c# jquery ajax asp.net-mvc-4

在我的c#mvc4应用程序中,我有三个对象,我希望使用带有Jquery的AJAX帖子传递给ActionResult。对象是两个字符串和一个表单集合。我只有传递表单集合没有问题,但似乎无法通过所有三个语法正确的语法。这是我尝试过的:

 $(document).ready(function () {
        $('#ChangeName').click(function (e) {
            var tdata = $('#form1').serialize();
            var origname = $('#NameDiv').find('input[name="myName"]').first().val();
            var newname = $('#NameDiv').find('input[name="updatedName"]').first().val();
            $.ajax({
                type: "POST",
                data: {tdata + origname + newname},
                url: "Home/ChangeName",
                success: function (result) { success(result); }
            });
        });

我在data:部分中的每个变量名后面都有逗号,有或没有括号。我怎么能通过这三个?成功时,两个字符串值在调试时都已正确填充,但值不会出现在ActionResult中,而是显示为null。 我也尝试将此数据置于数据下方:contentType: "application/x-www-form-urlencoded",

这也是我的ActionResult的开始:

 public ActionResult ChangeName(string Name, string updatedName, FormCollection mCollection)

2 个答案:

答案 0 :(得分:3)

你可以尝试:

$(document).ready(function () {
        $('#ChangeName').click(function (e) {
            var tdata = $('#form1').serialize();
            var origname = $('#NameDiv').find('input[name="myName"]').first().val();
            var newname = $('#NameDiv').find('input[name="updatedName"]').first().val();
            $.ajax({
                type: "POST",
                data: {
                    mCollection: tdata,
                    Name: origname,
                    updatedName: newname
                },
                url: "Home/ChangeName",
                success: function (result) { success(result); }
            });
        });

答案 1 :(得分:0)

我认为问题是你如何将origname和newname放在ajax请求中。 试试这个:

var origname = $('#NameDiv').find('input[name="myName"]').first().val();
var newname = $('#NameDiv').find('input[name="updatedName"]').first().val();
$.ajax({
     url: 'Home/ChangeName',
     type: "POST",
     data: $("#form1").serialize() + "&origname =" + origname + "&newname =" + newname, 
     success: function (result) { success(result); }
});