C# jquery AJAX get遇到有效json响应的未定义错误
团队-我是jquery新手,面临着一个给出未知错误的有效json响应的问题 基于Web的C#MVC和后端数据库是SQL Server。我正在使用EF 如果我使用以下代码:C# jquery AJAX get遇到有效json响应的未定义错误,c#,jquery,ajax,get,C#,Jquery,Ajax,Get,团队-我是jquery新手,面临着一个给出未知错误的有效json响应的问题 基于Web的C#MVC和后端数据库是SQL Server。我正在使用EF 如果我使用以下代码: IQueryable dbResult = dbContext.ParentRecord.Where(row => row.Id ==id).Include(row => row.ChildRecord); if (dbResult != null) { return Ok(dbResult) } 我已经验证了
IQueryable dbResult = dbContext.ParentRecord.Where(row => row.Id ==id).Include(row => row.ChildRecord);
if (dbResult != null) { return Ok(dbResult) }
我已经验证了HTTP状态代码是200,子记录填充正确,并测试了该结构是否为有效的json
但是,上述函数在get函数中遇到错误。如果删除Include,则ParentRecord.ChildRecord为null,get有效
没有关于xhr对象中错误的详细信息。它进入错误函数,响应未定义。(代码如下)
请注意:我试过使用fail函数,数据类型:“json”,
内容类型:“application/json,charset=UTF-8”组合
$.ajax({
url: _url,
cache: false,
error: function (xhr, status, error) {
alert("error : " + xhr.responseText);
}
}).done(function (data) {
alert("inside " + data);
})
有人能告诉我错误的根本原因吗?或者帮助我获得有关实际错误的更多详细信息?包括成功,例如:
cache: false,
success: function(reponse){
//parse your serverside code from resonse
}
我希望这对你有用
另外,在javascript/jquery中,执行会在代码中发现错误的那一行停止。
在ajax中,末尾有一个额外的“逗号”。我要大胆一点
.ajax({
url: _url,
cache: false,
error: function (xhr, status, error) {
alert("error : " + xhr.responseText);
}, // <=== there's extra comma here. When comma is mentioned it expects for another parameter as you're passing an object. Remove it.
}).done(function (data) {
alert("inside " + data);
})
.ajax({
url:_url,
cache:false,
错误:函数(xhr、状态、错误){
警报(“错误:+xhr.responseText”);
},//这个问题可以追溯到C#中的Fluent API。显然,我没有意识到jquery不仅需要一个有效的json结构,还需要用相应的类验证json响应
不幸的是,jquery get error没有向我提供有关错误的任何详细信息,这使得异常很难检测(特别是像我这样的新手)
在这种情况下,类的验证失败,因为它在响应结构中需要一个ChildRecord.ParentRecord=null字段。此异常是由于Fluent API导航属性定义造成的,其中ChildRecord类具有以下声明:
[ForeignKey("PID")]
public virtual ParentRecord ParentRecord { get; set; }
解决方法是将ChildRecord.ParentRecord显式设置为null并确保将其传递到响应中,或者更改Fluent API定义
我选择了第二个选项。包括success
例如:cache:false,success:function(response){//parse your serverside code from resonse}
。我希望这对你有用谢谢你指出。逗号是文章中的一个输入错误。请忽略。从文章中删除了逗号。我也尝试过成功组合。@Cadenza如果你说你收到了200个代码,并且确定你发送了一些数据,并且已经发送了。那么你必须调试“成功”功能n、 在success函数中添加debugger;
,并在调用此ajax之前按浏览器上的F12
进行调试,查看得到的结果。它没有进入success函数。success:function(data){console.log(data);}hmm call$(ajax){()}
?它甚至没有在任何一行给出错误?@Cadenza看看这是否有帮助