【发布时间】:2018-05-23 01:05:25
【问题描述】:
我有一个在按钮单击时触发的函数,它传递以下参数:insertSongPlay(newSong.songID); 当我 console.log newSong.songID 我看到一个值 90,这是所需的。
这里调用这个函数,它运行一个 ajax 调用:
function insertSongPlay(songID)
{
$.ajax
({
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
url: "/Album/InsertSongPlay/",
data: JSON.stringify({ "songID": songID }),
success: function(data)
{
console.log("submitted");
console.log(songID);
//TODO: Indicate Success
},
error: function(jqXHR, textStatus, errorThrown)
{
//TODO: Indicate Error
console.log(errorThrown);
}
});
}
这是在我的 AlbumController 中找到的相应 ajax url:
public JsonResult InsertSongPlay(int songID)
{
try
{
EntityDataAccess.InsertSongPlay(songID);
return Json(true);
}
catch(Exception ex)
{
return Json(ex);
}
}
然后在我的EntityDataAccess.cs下面是从InsertSongPlay实体数据访问中运行的:
public static SongPlayDaily InsertSongPlay(int songID)
{
using(var Context = GetContext())
{
var currentSongPlay = Context.SongPlayDailies.FirstOrDefault(x => x.SongID == songID && x.PlayDate == DateTime.Now.Date);
if (currentSongPlay != null)
currentSongPlay.NumberOfPlays++;
else
{
currentSongPlay = new SongPlayDaily();
currentSongPlay.SongID = songID;
currentSongPlay.PlayDate = DateTime.Now.Date;
currentSongPlay.NumberOfPlays = 1;
Context.SongPlayDailies.Add(currentSongPlay);
}
Context.SaveChanges();
return currentSongPlay;
}
}
但是,我的 ajax 调用总是会引发错误并将Internal Server Error 打印到控制台日志中。 Visual Studio 调试模式指示某种循环引用错误。我不太确定我哪里出错了。
谢谢!
【问题讨论】:
-
错误信息到底是什么?
-
@epascarello 我的 ajax 响应返回一个错误参数:
Internal Server Error但在调试模式下我看到更多信息:A circular reference was detcted while serializing an object of typeSystem.Reflection.RuntimeModule` -
删除
return Json(ex)- 我猜这就是导致循环引用错误的原因。然后看看抛出了什么真正的错误。 -
使用
throw而不是使用Json来查看实际错误 -
@Niladri 没有。使用
throw,或直接删除try/catch。
标签: javascript c# jquery asp.net ajax