如何为网站设置 JSON API 超时?
Posted
技术标签:
【中文标题】如何为网站设置 JSON API 超时?【英文标题】:How to set JSON API timeout for a website? 【发布时间】:2020-05-19 16:29:46 【问题描述】:我已经在 *** 网站上搜索过这个解决方案,但我找不到任何适合我的问题的解决方案。
我正在请求 API .. 但是当该 api 网站离线时,它需要中止/超时请求。
知道怎么做吗?
这是我的脚本:
function getStreamDetails()
$.ajaxSetup( cache: false );
$.getJSON('https://mywebsite.com/streaminfo.php', function(data)
var artist = data['song'];
var title = data['song'];
var artistClean = artist.length > 50 ? artist.substring(0, 50) + "..." : artist;
var music = artistClean;
var formattedMusic = music.replace(/;/g, ', ');
var dj = data['live'] == '' ? 'Auto DJ' : data['live'];
$('#dj').html(dj);
$('#listeners').html(data['Plays']);
$('#song').html(formattedMusic);
$('#song').attr('data-original-title', formattedMusic);
);
setInterval(getStreamDetails, 60000);
getStreamDetails();
希望有人可以帮助我:))
【问题讨论】:
***.com/questions/4138470/jquery-getjson-with-timeout 1.不要使用setInterval()
,而是使用setTimeout()
。要检测超时,请使用 fail()
承诺。
@MrD 我已经尝试过了,但不适合我的代码。
您应该在收到 API 的响应后再次调用 setTimeout
(无论其状态如何)。
【参考方案1】:
看看@下面的文章:https://it.toolbox.com/blogs/edmonbegoli/adjusting-jquery-json-timeouts-101508
我会引用there:
如果您正在使用 jQuery 进行 JSON AJAX 调用,并且您正在 更改超时值时遇到错误[...] AJAX 调用可能会有所帮助 缓解问题。
如果你正在使用 $.getJSON 方法,你 会注意到没有指定超时值的选项。 因此,您有两个选择: 1.将
$.getJSON
,只是一个包装方法,改为$.ajax
。所以,从
`$.getJSON("http://someurl", //Gives us parsed JSON automatically
somparam: params , //The params for the query resultsHandler
//The callback function that handles JSON results );
将
$.getJSON
调用更改为$.ajax
:
$.ajax(url:"http://someurl", dataType:'json', data: "someparam=" +
params,timeout: 7000, success:resultsHandler )
注意值 超时为 7000 或 7 秒。
更多详情请咨询$.ajax documentation。
另一种选择是在调用 getJSON 之前设置全局 AJAX 参数,然后将所有 getJSON 和使用这些设置的 AJAX 调用。
$.ajaxSetup( timeout: 7000 );
$.getJSON("http://someurl", //Gives us parsed JSON automatically
somparam: params , //The params for the query resultsHandler //The
callback function that handles JSON results );
更多详情请见$.ajaxSetup documentation。
【讨论】:
以上是关于如何为网站设置 JSON API 超时?的主要内容,如果未能解决你的问题,请参考以下文章
如何为 mysql 设置 ActiveRecord 查询超时?
我应该如何为其 API 使用 MailChimp JSON Schema?
如何为默认的swagger android客户端设置连接和套接字超时