我可以在ajax中发布json对象和参数

时间:2014-10-06 06:31:45

标签: javascript jquery ajax json

这是一个问题, 我正在使用$ .ajax发布到MVC控制器。 我的内容类型& dataType是json。 我发布一个json对象没有问题,但我可以在同一帖子上发布一个带有其他参数的json对象吗? (比如id或字符串)?

例如:

var jsonObject = JSON.stringify(data);
var id = 1;
$.ajax({
  url: 'some url',
  type: 'POST',
  data: {
    jsonObject: jsonObject, 
    id: id},
  contentType: "application/json; charset=utf-8",
  dataType: 'json',
  success: function (data) {

  },
  error: function (data, event) {

  },
});

[编辑] - 额外信息用于添加'id'作为属性没有帮助的问题,因为我在服务器端(MVC)的对象模型没有属性'id'它。假设我的'数据'对象模型是:

class Temp{
string name
string phone
}

现在,当我将json“POST”到MVC中的控制器时,我希望在POST上包含'id'参数。

所以控制器看起来像:

[HttpPost]
public JsonResult SampleMethod (Temp temp, int id){
...
}

1 个答案:

答案 0 :(得分:1)

没有必要对这些东西进行字符串化,jQuery会为你做这些:

// not necessary var jsonObject = JSON.stringify(data);
var id = 1;
$.ajax({
  "url": 'some url',
  "type": 'POST',
  "data": {
    "jsonObject": data, 
    "id": id
  },
  "dataType": 'json',
  "success": function (data) {

  },
  "error": function (data, event) {

  },
});

以及不需要content_type,dataType会相应地设置它。在服务器上,您得到(作为查询参数):

...jsonObject=<stringified data>&id=1234...

[编辑]

为了只传递数据对象,您可以将id添加为属性:

 var id = 1;
 data.myId = id;

 $.ajax({
    "url": 'some url',
    "type": 'POST',
    "data": data,
 ...