为什么我的AJAX错误没有返回Webmethod异常?
问题描述:
我为我的工作使用谷歌浏览器。为什么我的AJAX错误没有返回Webmethod异常?
正在关注https://stackoverflow.com/a/26003200/7204173我试图从webmethod返回一个异常。但它没有在console.log中显示任何内容。我唯一得到的是从网络选项卡下面的一般错误消息:
“更新条目时发生错误。请参阅内部异常的详细信息。
所以我试过低于(PS:我使用的发送DML数据库实体框架的DbContext):
public string AddData(myEntity e)
{
using(var context = new MyEntityModel())
{
try
{
context.myEntity.Add(e);
context.SaveChanges();
return "success";
}catch(Exception ex)
{
return "error : " + ex.Message;
}
}
}
现在我的Javascript代码:
function AddArticle()
{
var e {id : "1", value : "test"};
var DTO = { 'e': e };
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify(DTO),
url: "MyPage.aspx/AddData",
success: function (response) {
console.log(response);
},
error: function (xhr, status, error) {
var exception = JSON.parse(xhr.responseText);
alert(exception.Message);
console.log(exception.Message);
}
});
}
所以我们说我把它称为输入按钮后面的javascript函数。由于它是一个数据库,var e {id : "1", value : "test"};
不能被添加两次,因为id
是一个主键。仍然我没有在console.log中得到任何东西;警报框甚至不会被触发。但是,如果成功,console.log将按预期方式显示success
。
想知道我在哪里寻找我的错误吗?
答
您是否尝试记录其他错误参数?
console.log(xhr);
console.log(status);
console.log(error);
您应该能够手动解析控制台中的日志并找到所需变量的正确路径。
更新
console.log(error);
在OP
冷的情况下的答案。 'console.log(error);'显示错误信息。谢谢。但我也看到,'成功'和'错误'都被触发。例如在'success'中添加'$。('#id')。val('')'也会触发......为什么? – snorlax
似乎'$。('#id')。val('')'包含一个空格。所以它会触发'返回'成功''。你有没有尝试删除像[这里](http://stackoverflow.com/a/2373663/7823445)返回语句? – Keylies
我最近的评论不会对你有所帮助。看看[谷歌镀铬火两次](http://stackoverflow.com/questions/35061361/javascript-jquery-on-click-confirm-fires-twice)它可能是一个缓存问题在隐私模式下加载页面。不要忘了回答有效或更新标题 – Keylies