Jquery 如何将JSON数据发布到Action方法?
我正在向服务器(.Net)发送邮件,将数组传递到控制器操作时遇到问题。我尝试了几乎所有可能的组合,但没有任何运气。然而,其中一个问题让我感到困惑 如果我执行此请求:Jquery 如何将JSON数据发布到Action方法?,jquery,.net,asp.net-mvc-4,Jquery,.net,Asp.net Mvc 4,我正在向服务器(.Net)发送邮件,将数组传递到控制器操作时遇到问题。我尝试了几乎所有可能的组合,但没有任何运气。然而,其中一个问题让我感到困惑 如果我执行此请求: var dataArray = [ { /* some plain object */ }, { /* another plain object */ ], ... ]; $.ajax(url, { type: "post", data: { models: dataArray } }); 产生一个请求,发送数据如下
var dataArray = [ { /* some plain object */ }, { /* another plain object */ ], ... ];
$.ajax(url, {
type: "post",
data: { models: dataArray }
});
产生一个请求,发送数据如下
models[0][property1]:value1
models[0][property2]:value2
...
models[1][property1]:value3
models[0][property2]:value4
...
不幸的是,.NETMVC4无法理解该请求。下面是一个相关的示例,我尝试了traditional:true
,但发送到服务器的请求如下所示:
models:[object Object]
显然,它发送的不是对象,而是字符串“[object object]”
。。。这个怎么了?我是否注定要为每个涉及非原语参数的请求发送序列化字符串(并且必须在服务器端手动反序列化它们)
注意:这是我的行动方法。就目前而言,我尝试的每一件事都有结果
[HttpPost]
public ActionResult UpdateModels(Models.SimpleModel[] models)
尝试对数组使用
JSON.stringify
,比如JSON.stringify(dataArray)
更新
如果在使用ajax调用时使用stringify,MVC3会自动将字符串数据转换为.NET对象。我认为MVC4也是如此
更新2将contentType属性设置为application/json;charset=utf-8尝试使用
JSON.stringify
作为类似JSON.stringify(dataArray)
更新
如果在使用ajax调用时使用stringify,MVC3会自动将字符串数据转换为.NET对象。我认为MVC4也是如此
更新2将contentType属性设置为application/json;charset=utf-8示例JQuery
var MyConnectionList = {
ColorList: []
};
function SendStream() {
MyConnectionList.ColorList.push({
"Name": 'Test1',
"Color": 'red'
});
MyConnectionList.ColorList.push({
"Name": 'Test2',
"Color": 'Green'
});
$.ajax({
url: url,
data: JSON.stringify(MyConnectionList),
async: true,
type: 'POST',
beforeSend: function (xhr, opts) {
},
contentType: 'application/json; charset=utf-8',
complete: function () { },
success: function (data) {
}
});
}
样本控制器
public ActionResult SendStream(List<Sample> ColorList)
{
return null;
}
公共操作结果发送流(列表颜色列表)
{
返回null;
}
示例JQuery
var MyConnectionList = {
ColorList: []
};
function SendStream() {
MyConnectionList.ColorList.push({
"Name": 'Test1',
"Color": 'red'
});
MyConnectionList.ColorList.push({
"Name": 'Test2',
"Color": 'Green'
});
$.ajax({
url: url,
data: JSON.stringify(MyConnectionList),
async: true,
type: 'POST',
beforeSend: function (xhr, opts) {
},
contentType: 'application/json; charset=utf-8',
complete: function () { },
success: function (data) {
}
});
}
样本控制器
public ActionResult SendStream(List<Sample> ColorList)
{
return null;
}
公共操作结果发送流(列表颜色列表)
{
返回null;
}
我尝试过,除非我手动反序列化字符串,否则它不起作用(因此,我需要接收字符串,而不是使用IEnumerable
或对象数组)。我想知道.Net MVC4如何能够接受我发送的内容,而不是像这样一个傻瓜。但是,如果没有显式设置contentType,MVC4就无法理解JSON数据。我尝试过,除非手动反序列化字符串(因此,我需要接收字符串,而不是使用IEnumerable
或对象数组)。我想知道.Net MVC4如何能够接受我发送的内容,而不成为这样一个混蛋。是的,但是如果没有显式设置contentType,MVC4不理解JSON数据。很好JSON.stringify(object)
withcontentType:'application/JSON;charset=utf-8'
解决了这个问题!我现在可以接受我的论点了!谢谢很好JSON.stringify(object)
withcontentType:'application/JSON;charset=utf-8'
解决了这个问题!我现在可以接受我的论点了!谢谢