2014-10-06 72 views
-2

这里是一个问题, 我使用$ .ajax发布到MVC控制器。 我的contentType & dataType是json。 我在发布json对象时没有问题,但是我可以在同一个帖子上发布一个带有其他参数的json对象吗? (像一个ID或字符串)?我可以发布json对象和参数在ajax

例如:

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) { 

    }, 
}); 

[编辑] - 对问题的额外信息添加“身份证”财产是没有帮助的,因为在服务器端(MVC)我的对象模型不有属性'id'。比方说,我的“数据”对象模型是:

class Temp{ 
string name 
string phone 
} 

现在,当我“POST”的JSON在MVC控制器我想包括在岗位上“ID”参数。

因此控制器的样子:

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

你已经通过填充'data'属性来做 - 或者我错过了什么? – 2014-10-06 06:33:37

+0

既然你正在把你的JSONObject字符串化,我不明白为什么你不能这样做。你有没有理由认为这是不可能的? – MrHug 2014-10-06 06:35:35

+0

数据属性缺少对象模型上的额外参数,并且我无法将其添加到对象模型,所以我需要设法发送一个json和另一个参数。 – eyalewin 2014-10-06 06:35:55

回答

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, 
...