Jquery 如何使用ajax将json字符串发布到控制器方法?
我希望能够Jquery 如何使用ajax将json字符串发布到控制器方法?,jquery,asp.net-mvc,visual-studio-2013,asp.net-mvc-5,Jquery,Asp.net Mvc,Visual Studio 2013,Asp.net Mvc 5,我希望能够post将json字符串发送到控件操作,但它总是以null的形式接收字符串。如果我为controller方法创建一个视图模型,它会工作,但这不是我想要的,因为需要维护的视图模型太多了 控制器 [HttpPost] public JsonResult Test(string json){ // debugger stops here, but json is null. why? dynamic item = Json.Parse(json); var temp
post
将json字符串发送到控件操作,但它总是以null
的形式接收字符串。如果我为controller方法创建一个视图模型,它会工作,但这不是我想要的,因为需要维护的视图模型太多了
控制器
[HttpPost]
public JsonResult Test(string json){
// debugger stops here, but json is null. why?
dynamic item = Json.Parse(json);
var temp = item.prop1;
return Json(false, JsonRequestBehavior.DenyGet);
}
[HttpPost]
public JsonResult Test(string json){
dynamic item = JObject.Parse(json);
var temp = item.prop1;
return Json(false, JsonRequestBehavior.DenyGet);
}
javascript
var data = {
prop1: 'test',
prop2: 'test2',
};
$.ajax({
type: 'post',
dataType: 'json',
url: 'approot\Test',
data: JSON.stringify(data),
contentType: 'application/json',
success: function(json) {
if (json) {
alert('ok');
} else {
alert('failed');
}
},
});
var json = {
prop1: 'test',
prop2: 'test2',
};
var data = {
json: JSON.stringify(json),
};
$.ajax({
type: 'post',
dataType: 'json',
url: 'approot\Test',
data: data,
// contentType: 'application/json', <-- no need this.
success: function(json) {
if (json) {
alert('ok');
} else {
alert('failed');
}
},
});
谢谢Stephen Muecke的提示,我是这样做的:
控制器
[HttpPost]
public JsonResult Test(string json){
// debugger stops here, but json is null. why?
dynamic item = Json.Parse(json);
var temp = item.prop1;
return Json(false, JsonRequestBehavior.DenyGet);
}
[HttpPost]
public JsonResult Test(string json){
dynamic item = JObject.Parse(json);
var temp = item.prop1;
return Json(false, JsonRequestBehavior.DenyGet);
}
javascript
var data = {
prop1: 'test',
prop2: 'test2',
};
$.ajax({
type: 'post',
dataType: 'json',
url: 'approot\Test',
data: JSON.stringify(data),
contentType: 'application/json',
success: function(json) {
if (json) {
alert('ok');
} else {
alert('failed');
}
},
});
var json = {
prop1: 'test',
prop2: 'test2',
};
var data = {
json: JSON.stringify(json),
};
$.ajax({
type: 'post',
dataType: 'json',
url: 'approot\Test',
data: data,
// contentType: 'application/json', <-- no need this.
success: function(json) {
if (json) {
alert('ok');
} else {
alert('failed');
}
},
});
var json={
建议1:‘测试’,
prop2:'test2',
};
风险值数据={
json:json.stringify(json),
};
$.ajax({
键入:“post”,
数据类型:“json”,
url:“批准\测试”,
数据:数据,
//contentType:'application/json',您的操作方法需要一个字符串。创建一个javascript对象,给它属性“data”,并将数据对象字符串化以便发送
更新代码:
$.ajax({
type: 'post',
dataType: 'json',
url: 'approot\Test',
data: { "json": JSON.stringify(data) },
success: function (json) {
if (json) {
alert('ok');
} else {
alert('failed');
}
},
});
删除contentType:'application/json'
并使用data:data,
(nojson.stringify()
,然后将方法更改为public JsonResult Test(string prop1){
(prop1
将包含值'Test'
)@StephenMuecke,我删除了contentType
并使用数据
,但仍然得到null
。然而,我不能只使用Test(string prop1)
因为json可能包含多个属性,而这些属性在运行时可能是未知的。您是否正在点击控制器-url:'approt\Test',
应该是url:'/approt/Test',
(或者要正确执行,那么url:'@Ul.Action(“Test”,“approt”)“,
success函数(json){if(json){alert(“ok”)}中的方法返回了什么?