我尝试将JSON对象发送回服务器。这是我的AJAX电话:
$.ajax({
url: '/Home/NewService',
async: false,
type: "POST",
data: JSON.stringify(props),
error: function (jqXHR, textStatus, errorThrown) {
console.log("FAIL: " + errorThrown);
},
success: function (data, textStatus, jqXHR) {
console.log("SUCCES");
}
});
浏览器调试器中JSON.stringify(props)
的评估是
"[{"name":"firstName","value":"firstValue"}]"
这是被称为控制器的方法:
[HttpPost]
public void NewService(dynamic json)
{
Response.Write(json);
}
我遇到的问题是上面的json
变量始终是一个空对象。
success
函数被调用,但是当我调试时,json
var显示为空。
请告诉我我做错了什么。 谢谢。
答案 0 :(得分:15)
我认为你不能像你想要的那样绑定到动态类型。您可以尝试创建一个映射数据的类,如:
public class Content
{
public string Name { get; set; }
public string Value { get; set; }
}
现在你的行动:
[HttpPost]
public ActionResult NewService(Content[] data)
{
// sweet !
}
在你的js中,像Olaf Dietsche说你需要指定你的contentType
:
var props = [
{ "Name": "firstName", "Value": "firstValue" },
{ "Name": "secondName", "Value": "secondValue" }
];
$.ajax({
url: '/Home/NewService',
contentType: "application/json",
async: true,
type: "POST",
data: JSON.stringify(props),
error: function (jqXHR, textStatus, errorThrown) {
console.log("FAIL: " + errorThrown);
},
success: function (data, textStatus, jqXHR) {
console.log("SUCCESS!");
}
});
答案 1 :(得分:6)
根据jQuery.ajax()
,默认内容类型为application/x-www-form-urlencoded
。如果要将数据作为JSON发送,则必须将其更改为
$.ajax({
url: '/Home/NewService',
contentType: 'application/json',
...
});
答案 2 :(得分:-3)
使用以下代码解决此问题
Ajax呼叫
function SaveDate() { var obj = {}; obj.ID = '10'; obj.Name = 'Shafiullah'; $.ajax({ url: '/Home/GetData', dataType: "json", type: "Post", contentType: 'application/json', data: JSON.stringify({ ID: obj.ID, Name: obj.Name }), async: true, processData: false, cache: false, success: function (data) { alert(data.id + ' , ' + data.name); }, error: function (xhr) { alert('error'); } }); }
我的控制器操作方法
[HttpPost] public IActionResult GetData([FromBody] Employee employee) { return Json(employee); }