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
相关产品推荐
相关产品推荐

