使用MAMP本地环境运行AJAX请求无法获取返回数据如何解决
问题根因
你代码中唯一的核心错误是没有正确调用请求发送方法:xhr.send只是对send函数本身的引用,没有加括号执行调用,AJAX请求根本没有被发出,自然不会触发后续的onload回调逻辑,控制台也就不会有输出。
修正后的代码
只需要修改JavaScript中send相关的一行即可,完整代码如下:
const astrosUrl = 'http://api.open-notify.org/astros.json'; function getJSON(url) { const xhr = new XMLHttpRequest(); xhr.open('GET', url); xhr.onload = () => { if (xhr.status === 200) { let data = JSON.parse(xhr.responseText); console.log(data); } }; // 此处增加括号,执行send方法发送请求 xhr.send(); } getJSON(astrosUrl);
HTML代码不需要做任何修改。
补充说明:如果你本地MAMP站点配置了HTTPS访问,请求HTTP接口会被浏览器安全策略拦截,只需要把
astrosUrl的协议改为https即可,即const astrosUrl = 'https://api.open-notify.org/astros.json';
验证步骤
- 保存修改后的
main.js文件覆盖原有文件 - 确保MAMP服务处于启动状态,在浏览器访问对应本地站点地址
- 打开浏览器开发者工具的控制台面板,即可看到接口返回的太空人员数据对象正常打印
内容的提问来源于stack exchange,提问作者bonbon
相关产品推荐
相关产品推荐

