$ .post在jquery中有两个参数

时间:2015-02-13 12:00:59

标签: jquery ajax asp.net-mvc-3

请参阅下面的Scirpt代码

var criteriaSubmission = new Object();
        criteriaSubmission['CurrentController'] = "xx";
        criteriaSubmission['CurrentAction'] = "yy";
        criteriaSubmission['CurrentArea'] = "Cp";
var columIndex="[1,2,3,4]"

 var addModel = new Object();

$.post('Fav/Add', { addModel: criteriaSubmission, columns: JSON.stringify(columnsIndex) },
        function (data) {

        });

MVC行动代码:

public ActionResult Add(SavedReportCriteriaModel addModel,string columns)
        {
//DO Something
    }

列值传递给控制器​​操作但addModel数据未传递。 addModel值为NULL。

型号代码:

public class SavedReportCriteriaModel
    {

        public string CurrentController { get; set; }


        public string CurrentAction { get; set; }

public string CurrentArea { get; set; }
}

我不想更改SavedReportCriteriaModel以添加列的其他属性。我需要有两个参数。

为什么addModel将变为NULL。 jquery.post代码中的问题是什么?

1 个答案:

答案 0 :(得分:2)

为什么会这样:

var addModel = new Object();` 

你的addModel是一个JSON属性,应该用json写成{ "addModel" : ...而不是将它分配给一个对象......

只需使用代码中的一个简单模型,并修复类型columnsIndex(因为该属性称为columnIndex(单数)我可以将所有值传递给它:

enter image description here

脚本页面如下:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>

    var criteriaSubmission = new Object();
    criteriaSubmission['CurrentController'] = "xx";
    criteriaSubmission['CurrentAction'] = "yy";
    criteriaSubmission['CurrentArea'] = "Cp";
    var columIndex = "[1,2,3,4]";

    //var addModel = new Object();

    $(function() {
        $.post('@(Url.Action("Add"))', {
            "addModel": criteriaSubmission,
            "columns": JSON.stringify(columIndex)
        },
        function (data) {
            alert(data);
        });
    });
</script>

注意:

  • $(function() {})包含$.post调用,因为只有在jQuery完全加载并且页面准备就绪时发布才很重要
  • columsIndex在通过帖子传递的JSON数据中被columIndex修改
  • addModel作为变量被注释掉了
  • 帖子网址实际上是使用MVC助手@(Url.Action("Add")创建的,在我的演示网站中,我会创建/Home/Add的链接,并在ActionResult中添加了Home } controller
  • JSON属性包含在双引号"