C# JObject 作为一个空列表到达前面
C# JObject arrives to the front as an empty list
我正在使用 jQuery Ajax 将 Newtonsoft 对象从 MVC 控制器任务发送到前端,但我一直在努力解决这个问题。出于某种原因,对象作为一个空列表到达,我试图简化对象,认为问题是嵌套其他对象的结构,但即使在最简单的情况下它也不起作用。
我按照另一个问题 中所述更新了 Newtonsoft 的版本,但我的问题仍然存在。我知道这看起来很简单,但我不确定我可能做错了什么。
这是控制器中的方法
[HttpPost]
public async Task<JsonResult> Something(string data)
{
//some asynchronous stuff
var jsonObject = new JObject();
jsonObject.Add("x", "text");
return Json(jsonObject);
}
我的JQueryajax电话
$.ajax({
type: "POST",
url: url,
data: JSON.stringify(parameters),
contentType: "application/json",
success: function (data) {
debugger;
}
}).fail(function (jqXHR, textStatus, errorThrown) {
});
答案是这样的
[[[]]]
我快被这个问题搞疯了,非常感谢任何建议
我在你的代码中看不到任何异步,但无论如何都试试这个。并且最好使用 ActionResult 而不是 JsonResult。在这两种情况下,json 都将被 return 编辑,但 ActionResult 允许 return 如果存在一些问题
错误请求
public async Task<ActionResult> Something()
{
if(some promble) return BadRequest("problem");
return Ok( new { x="text"} );
}
我对自己的问题添加了一个答案,希望它可以帮助处于相同情况的其他人。
我用以下方式包装了答案,现在它工作正常。我不确定为什么不能直接发送它,但可能与嵌套对象的问题有关。
JsonResult data = new JsonResult();
data.Data = new
{
success = true,
result = JsonConvert.SerializeObject(rta.Data)
};
注意字符串的最大长度也可能有用,因为如果原始对象太大,这可能会增加更多问题。
如果对象不是那么大,这可能是更好的选择,如
所述
我正在使用 jQuery Ajax 将 Newtonsoft 对象从 MVC 控制器任务发送到前端,但我一直在努力解决这个问题。出于某种原因,对象作为一个空列表到达,我试图简化对象,认为问题是嵌套其他对象的结构,但即使在最简单的情况下它也不起作用。
我按照另一个问题
[HttpPost]
public async Task<JsonResult> Something(string data)
{
//some asynchronous stuff
var jsonObject = new JObject();
jsonObject.Add("x", "text");
return Json(jsonObject);
}
我的JQueryajax电话
$.ajax({
type: "POST",
url: url,
data: JSON.stringify(parameters),
contentType: "application/json",
success: function (data) {
debugger;
}
}).fail(function (jqXHR, textStatus, errorThrown) {
});
答案是这样的
[[[]]]
我快被这个问题搞疯了,非常感谢任何建议
我在你的代码中看不到任何异步,但无论如何都试试这个。并且最好使用 ActionResult 而不是 JsonResult。在这两种情况下,json 都将被 return 编辑,但 ActionResult 允许 return 如果存在一些问题
错误请求public async Task<ActionResult> Something()
{
if(some promble) return BadRequest("problem");
return Ok( new { x="text"} );
}
我对自己的问题添加了一个答案,希望它可以帮助处于相同情况的其他人。 我用以下方式包装了答案,现在它工作正常。我不确定为什么不能直接发送它,但可能与嵌套对象的问题有关。
JsonResult data = new JsonResult();
data.Data = new
{
success = true,
result = JsonConvert.SerializeObject(rta.Data)
};
注意字符串的最大长度也可能有用,因为如果原始对象太大,这可能会增加更多问题。
如果对象不是那么大,这可能是更好的选择,如