考虑下面的代码:
fetch('https://api.flickr.com/services/rest/?method=flickr.photos.search' +
'&api_key=thiskeyshouldgivemeanerror&text=dog&format=json' +
'&per_page=24&nojsoncallback=1')
.then(function(rsp) {
// Gives "Response {type: "cors", url: "https://api.flickr.com/services/rest/
// ?method=flick…text=dog&format=json&per_page=24&nojsoncallback=1",
// redirected: false, status: 200, ok: true, …}"
console.log(rsp);
if(rsp.stat !== "ok") {
throw new Error(rsp.message);
}
else {
return rsp.json();
}
})
.then(function(rsp) {
// Gives "{stat: "fail", code: 100, message: "Invalid API Key (Key not found)"}"
// if no error is thrown.
// Exactly what I want in the first instance!
console.log(rsp);
})
.catch(function(err) {
alert("Something went wrong. " + err);
});
我想做的是用我应该从JSON响应中获得的错误消息捕获错误。我希望在我的第二个console.log中得到一个响应,但是不知何故,响应在第一个console.log.我如何在第一个实例中得到我想要的响应?
此外,为什么响应在第一个实例中给我“ok”,即使应用编程接口密钥不存在?
为什么我必须返回rsp.json()才能在第二个实例中获得正确的JSON,而响应应该已经是JSON格式的?
第一个then块中的rsp
是一个响应对象,而不是后端返回的数据。响应对象没有stat
字段,因此其值不能为“ok”。您可能应该检查rsp。正常
或rsp。状态
。
检查响应对象引用
在第二个then块中,您可以基于后端返回的JSON数据执行一些检查,然后在需要时抛出一个错误。
fetch(url)
.then(function(response) {
if(!response.ok) {
throw new Error("not ok");
}
return response.json()
})
.then(function(result) {
if(result.stat === "fail") {
throw new Error(result.message);
}
// Everything should be ok, process the result here
})
.catch(function(err) {
alert(err);
});
问题内容: 我有以下代码: 我想捕获HTML响应?我该怎么做呢?我可以向form1.submit方法注册任何回调函数吗? 问题答案: 使用普通的javascript,您将无法轻松做到这一点。发布表单时,表单输入将发送到服务器,页面会刷新- 数据在服务器端处理。也就是说,该函数实际上不返回任何东西,它只是将表单数据发送到服务器。 如果您真的想用Javascript获得响应(无需刷新页面),则需要使用
我试图拦截来自所有promise然后方法的响应。但是我不能在原型然后方法中得到响应数据。请找到下面的代码。 在上面的代码中,我可以看到控制台打印在所有Promise调用中。但是我无法在then中获得响应对象。 控制台中打印的this对象值: “then”原型方法中的打印参数: 请建议我在then方法中获取所有promise方法的响应对象。 我尝试使用“arguments[0].arguments”
我想检查在页面之间导航时是否收到错误消息。当错误消息出现时,测试将被终止并进行报告。为此,我使用了以下与站点上的错误消息相关的元素。
需要捕获python中HTTP错误的响应主体。当前正在使用python请求模块的raise_for_status()。此方法仅返回状态代码和说明。需要一种方法来捕获响应主体以获取详细的错误日志。 如果在某些不同的模块中存在类似的必需特性,请建议python请求模块的替代方案。如果没有,请建议可以对现有代码进行哪些更改以捕获所述响应主体。 当前实现仅包含以下内容:
这几个月来,我们一直在努力实现这一目标,但现在需要这样做。我需要显示服务器上设置的错误消息,说明出现了什么错误: 服务器endpoint 网状物: 在chrome开发工具中的预览下,我看到消息
我有一个使用axios进行ajax调用的操作,每当axios返回错误时,它就会被axios catch函数捕获,因此我想知道是否有可能将相同的错误抛出到dispatch catch函数。 我尝试//抛出新错误(“内部测试错误”);从axios内部捕获(错误),但dispatch似乎无法捕获错误 vuex存储上的操作代码 关于我在vue组件上的方法 我希望axios抛出catch error,该错误