所以我正在使用以下外部脚本。
<script type="application/javascript" src="https://api.ipify.org"> </script>
它以纯文本形式答复客户端IP地址。我尝试使用available JSON响应类型使其工作,并且可以通过回调捕获数据。但是,当我尝试仅获取纯文本时,无法解决如何解析此数据的问题,只是不断出现“意外数字”错误。是否可以检索信息并将其存储而无需回调?
答案 0 :(得分:1)
您正在尝试将纯文本作为JavaScript代码加载。不要那样做浏览器将尝试解析为JavaScript并执行响应,然后由于语法不正确而引发错误。
相反,请使用各种AJAX API,该API允许您向端点发出请求并使用数据。
例如,使用fetch()
:
fetch("https://api.ipify.org")
.then(res => res.text())
.then(data => console.log(data));
还有许多其他方法可以发出AJAX请求:
以及其他所有可以做相同事情的方式。要了解的基本知识是,您需要发出请求以获取资源,而不是尝试将其作为JavaScript文件加载。
答案 1 :(得分:1)
最简单的方法是将其请求为JSONP,它提供了回调函数。
<script type="text/javascript" src="https://api.ipify.org/?format=jsonp&callback=someName"></script>
在加载时,它将在窗口范围内调用一个名为someName
的函数,该函数将接收一个具有属性ip
的对象。
当然,有更好的方法。例如,jQuery的$.ajax
支持JSONP(别名$.getJSON
),并具有成功/失败处理程序,fetch()
等。
答案 2 :(得分:1)
是的,您可以使用此脚本获取IP
async function getIP() {
try {
const res = await fetch('https://api.ipify.org?format=json');
const jsonObj = (res.json()).then(data => alert(data.ip));
} catch (err) {
console.error(err);
}
}
getIP();
我希望我明白了你的意思并回答了你。