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

can i post json object and parameter in ajax

本文关键字:对象 参数 json ajax 我可以      更新时间:2023-09-26

这里有一个问题,我使用$.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) {
  },
});

[EDIT]-添加"id"作为属性的问题的额外信息没有帮助,因为我在服务器端的对象模型(MVC)没有属性"id"。假设我的"data"对象模型是:

class Temp{
string name
string phone
}

现在,当我在MVC中将json"POST"到控制器时,我希望在POST中包含"id"参数。

所以控制器看起来像:

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

没有必要字符串化这些东西,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,
 ...