有没有办法在ajax POST请求中发送对象和单独的变量

时间:2012-11-02 22:16:17

标签: javascript asp.net ajax asp.net-mvc json

我有一个帖子请求我这样做:

var addProject = function (project, id) {
            return $.ajax(projectUrl, {
            type: "POST",
            data: { project: project, id: id }
    });
};

这一切都很好,它发送我的项目对象(在JSON中)没有问题。我想要做的是这个请求,但也添加一个我可以传递给服务器控制器的密钥(不属于项目对象)。任何想法,如果我能做到这一点,或者有什么好办法做到这一点。我真的不想回去改变我的对象模型来解释我每隔一段时间才会需要的密钥。

这是一个ASP.NET MVC4项目,如果重要的话,它将回到web api控制器。

编辑:这是我的服务器端东西

    public HttpResponseMessage PostNew(Project project, int id)
    {
        //TODO grab the client to add the project to
        Uow.Projects.Add(project);
        Uow.Commit();

        HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, project);
        //response.Headers.Location = new Uri(Url.Link("ApiControllerAction", new { id = client.ID }));
        return response;
    }

也许我不够清楚。我想传递项目对象,然后只是一个int变量。单独传递项目是有效的,但如果我尝试传递int它会给我一个400错误

2 个答案:

答案 0 :(得分:3)

var addProject = function (project) {
            return 
              $.ajax(projectUrl, {
                type: "POST",
                data: {data1 : 'Object',data2: 'variable'}
              });
};

您只需发送2个数据参数。,object和var ..

答案 1 :(得分:0)

传递复杂对象的最简单方法是对它进行JSON编码:

var addProject = function (project) {
    return $.ajax(projectUrl, {
        type: "POST",
        contentType: 'application/json',
        data: JSON.stringify(project)
    });   
};

要在服务器端对此进行解码,您需要某种JSON解码器。我确信C#有一些可用。

相关问题