我正在编写一个脚本,该脚本使用XMLHttpRequest来搜索由相对路径定义的文件,尝试解析该脚本可识别的其他相同域绝对路径的相对路径,然后尝试从已解析的文件中加载该文件网址.如果我遇到404,我只是尝试将文件相对路径解析为另一个绝对路径,然后再试一次.对于这个特殊的脚本,它完全可以遇到404-然而,我的控制台上到处都是"无法加载资源:服务器响应状态为404(未找到)消息,我想要抑制它们.
据我所知,没有错误可以捕获 - 错误情况由xmlHttpRequest.onreadystatechange处理程序处理,并且没有window.onerror.
有没有办法压制这些消息?
谢谢
javascript google-chrome xmlhttprequest google-chrome-devtools
我知道如何接收服务器数据或错误.有很多方法.例如:
$.ajax({
type: "get",
url: "/widgets/",
success: function (data, text) {
console.log('this is a data');
},
error: function (request, status, error) {
console.log('this is an error');
}
});
Run Code Online (Sandbox Code Playgroud)
请看这个图像:

我有我的错误功能,我在那里做我需要的.如何防止第一行出错.我测试了4xx和5xx错误,但没有区别.我知道,当隐藏开发人员控制台时,最终用户不会看到此错误.
我需要这个来设计一个API.我知道我可以从服务器发送200个响应,并附加一个参数,表明这是一个错误或成功的结果.
但如果我可以发送4xx或5xx响应,则无需额外参数.这种方式对我来说有一些额外的收获.例如,我可以将成功结果应用于我的客户端模型,而无需担心额外的args.
谢谢
例如在javascript中
var image = new Image();
image.onerror = function(e) {
// handle error my way
}
image.src = "http://bad.location.com/img.jp"
Run Code Online (Sandbox Code Playgroud)
我试过了
e.preventDefault()
return false
Run Code Online (Sandbox Code Playgroud)
但错误仍记录到控制台.也许这不是一件坏事,但我正在做的是将文件上传到服务器,然后处理它们并将工件加载到S3.这一切都需要很长时间.我在后台执行此操作并提前将S3 URL返回到浏览器并使用一些javascript来使用image.onerror回调来ping图像URL以检测图像是否在S3上到达.
这一切都有效,但我得到了一大堆控制台错误.这有点难看.有没有办法隐藏这个.
我尝试发生404错误,因为源(src)丢失了..
var $chart = $("<img />")
.addClass("trend-pic")
.error(function(){
console.log("error loading..")
});
try{
$chart.attr("src", jobs[counter].url + "test/trend")
}catch(err){
$chart.attr("src", "");
}
Run Code Online (Sandbox Code Playgroud)
如果尝试了许多东西来捕捉错误,即最后放一个.error(function(){}).使用$chart.load()- 方法检查图像是否被加载?没有那些帮助?
GET {myURLString} 404 (Not Found)
浏览器:Safari
我有一个angular 2服务,该服务在其构造函数中调用http端点以检索当前用户。如果用户尚未通过身份验证,则端点将抛出401。
我的问题是即使我吃了错误,NG2也会记录异常。
这是我的服务功能:
getVal(): Observable<TestData | boolean> {
return this.http.get('badUrl', new JsonGetOptions())
.map(this.jsonParser)
.catch((error: any) => {
if (error.status && (error.status === 401 || error.status === 404)) {
return Observable.of(false);
}
return Observable.throw(error);
});
}
Run Code Online (Sandbox Code Playgroud)
这是服务构造函数:
constructor(public http: Http) {
this.valSource = new ReplaySubject<TestData | boolean>(1);
this.val$ = this.valSource.asObservable();
this.getVal()
.subscribe(val => {
this.valSource.next(val);
});
}
Run Code Online (Sandbox Code Playgroud)
这是柱塞
我简化了代码,并将其更改为使用HTTP / 404错误以在插件中工作。
一切正常。我看到控制台错误只是令人讨厌。
我想知道使用ajax函数时如何从后端处理400。我们可以在promise resolve函数中创建if语句,并检查res状态是否为400。不同的方法是为包装程序提供获取服务,当我们从服务器获取400时,将引发异常。该如何处理?
404在控制台上找不到我的应用程序日志页面,我想在它登录到控制台之前处理错误,
错误消息看起来像这样,
调用服务器的方法是get_user(),
get_user(slug);
get_user(slug: string) {
Observable.forkJoin(
this._service.get_user(slug)
).subscribe(
data => {
this.item = data[0];
},
err =>console.log("Error Dude!!")
);
}
Run Code Online (Sandbox Code Playgroud)
和服务方法,
private _endpoint = "http://127.0.0.1:8000/users/"
get_user(slug:string) {
if (url) {
return this._http.get(this._endpoint + slug)
.map(res=>res.json());
}
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
使问题清楚,
我不希望找不到404登录到控制台,而是在不让用户知道的情况下处理它!