0

我有一个发布请求,我正在这样做:

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 错误

4

2 回答 2

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

您只需发送 2 个数据参数,对象和变量。

于 2012-11-02T22:19:03.657 回答
0

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

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

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

于 2012-11-02T23:06:32.230 回答