You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Javascript如何将XMLHttpRequest请求返回的JSON对象存入变量

问题原因

你的代码无法正常获取变量值有两个核心问题:

  • XMLHttpRequest 本身就是AJAX技术的核心实现,你原本的写法本身就属于AJAX请求范畴,不符合你的使用要求
  • AJAX请求默认是异步执行的,lerArquivo 函数执行时网络请求还没返回结果,函数本身没有返回值,所以你拿到的cidade只会是undefined,请求返回的结果只能在回调函数内部处理,无法直接通过返回值赋值给外部变量。

解决方案(无需前端AJAX)

直接用PHP在服务端请求CEP接口,把返回结果直接注入到JS变量中,前端可以直接使用变量,不需要发任何请求:

<?php
$cep = 35400000;
// 服务端请求接口获取数据
$cepInfo = file_get_contents("https://viacep.com.br/ws/{$cep}/json/");
?>

<script type="text/javascript">
// 直接把PHP拿到的结果转成JS对象
var cidade = <?php echo $cepInfo; ?>;
// 直接使用变量即可
console.log(cidade);
document.write(JSON.stringify(cidade));
</script>

如果你的PHP环境禁止file_get_contents发起网络请求,也可以改用curl来请求接口:

<?php
$cep = 35400000;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://viacep.com.br/ws/{$cep}/json/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$cepInfo = curl_exec($ch);
curl_close($ch);
?>
<script>
var cidade = <?php echo $cepInfo; ?>;
console.log(cidade);
</script>

内容的提问来源于stack exchange,提问作者Rodrigo Franco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 11:09:05