如何利用已知league_id从API数据中匹配获取对应服务器ID
解决通过已知league_id提取对应服务器ID的问题
完善后的代码实现
var knownID = "32537"; // 全局变量存储提取到的服务器ID,供后续表单提交使用 var serverID; var url = '//api.myfantasyleague.com/' + year + '/export?TYPE=myleagues&JSON=1'; function GetServerID() { $.ajax({ url: url, type: "GET", dataType: 'json', xhrFields: { withCredentials: true }, success: function (data) { const myLeagues = data.leagues.league; // 1. 筛选出与knownID匹配的联赛数据 const targetLeague = myLeagues.find(league => league.league_id === knownID); if (targetLeague) { // 2. 从URL中提取www后的数字作为服务器ID const serverMatch = targetLeague.url.match(/www(\d+)\./); if (serverMatch && serverMatch[1]) { serverID = serverMatch[1]; console.log('已获取服务器ID:', serverID); // 此处可添加表单提交等后续逻辑 } else { console.error('无法从URL中解析服务器ID'); } } else { console.error('未找到匹配league_id的联赛数据'); } }, error: function(xhr, status, error) { console.error('API请求失败:', error); } }); }
核心逻辑说明
- 匹配目标联赛:使用
Array.find()遍历联赛数组,精准定位league_id与knownID一致的项,这是数组查找中效率较高的方式。 - 提取服务器ID:通过正则表达式
/www(\d+)\./捕获URL中www后的连续数字,兼容两位及更多位数的服务器ID(避免后续API格式变动导致失效),通过serverMatch[1]获取捕获到的数字值。 - 异常处理:添加了未找到目标联赛、解析失败、请求失败三种场景的错误提示,避免程序静默崩溃。
注意事项
- 确保
year变量已提前正确定义,否则API请求URL会无效。 - 如果不需要全局变量
serverID,也可以在获取到值后直接传入表单提交的逻辑中。
内容的提问来源于stack exchange,提问作者MShack
相关产品推荐
相关产品推荐

