调用isScamLink API获取返回结果时出现JS类型错误如何解决
错误原因
- 核心问题是返回值读取路径和接口实际结构不匹配:接口返回的JSON为
{"status":200,"result":true,"linkFound":""},result字段直接在响应顶级,不存在data嵌套对象。代码中response.data实际是undefined,读取undefined的total属性就会触发该类型错误。 - 现有逻辑存在额外隐患:AJAX请求在页面DOM加载完成后立即触发,此时id为
box的输入框默认值为空,会给接口传递空的link参数,可能导致接口返回异常。
修正方法
- 调整字段读取逻辑,直接从响应体顶级获取
result字段 - 增加请求触发条件,避免空参数请求,比如绑定查询按钮点击事件,输入内容后再发起请求
- 对链接参数做URL编码,避免特殊字符导致请求异常,同时增加错误捕获逻辑
修正后的完整可运行代码如下:
<input type="text" id="box" placeholder="请输入待检测链接"> <button id="checkBtn">开始检测</button> <p id="result"></p> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script> $(function() { $('#checkBtn').click(function() { const inputLink = $('#box').val().trim(); if (!inputLink) { $('#result').text('请输入需要检测的链接'); return; } $.ajax({ url: 'https://spen.tk/api/v1/isScamLink?link=' + encodeURIComponent(inputLink), type: 'GET', dataType: 'json', success: function(res) { // 直接读取顶级result字段,可根据需求转换为友好提示文本 const resultText = res.result ? '检测结果:当前链接为诈骗风险链接' : '检测结果:当前链接无诈骗风险'; $('#result').text(resultText); }, error: function() { $('#result').text('检测请求发送失败,请重试'); } }) }) }) </script>
内容的提问来源于stack exchange,提问作者ZeRealOne
相关产品推荐
相关产品推荐

