使用Laravel构建API仅在通过javascript调用时返回空对象。。。有时

使用Laravel构建API仅在通过javascript调用时返回空对象。。。有时,javascript,laravel,vue.js,caching,axios,Javascript,Laravel,Vue.js,Caching,Axios,我正在使用VueJS和Laravel构建一个网页,在遇到这个问题之前,一切都很好 首先,让我分享必要的代码: <script> axios.defaults.headers.common['Content-Type'] = 'application/json' var app = new Vue({ el: '#app', methods: { getHotelsByCityName: async functi

我正在使用VueJS和Laravel构建一个网页,在遇到这个问题之前,一切都很好

首先,让我分享必要的代码:

<script>
    axios.defaults.headers.common['Content-Type'] = 'application/json'

    var app = new Vue({
        el: '#app',
        methods: {
            getHotelsByCityName: async function () {

                const resp = await axios.get('localhost/api/hotels');
                console.log(resp);
                
            }
        },
    })
</script>
请注意,有时我会得到数据,有时我会得到空对象,事实上,如果我打开网页并不断刷新它,有时我会得到数据,有时我不会,我发现清除浏览器缓存会增加我获得正确数据的机会,所以这可能是一个缓存问题,但缓存的到底是什么?这是怎么回事

我使用的是Amadeus API,正如您所知,当我直接在浏览器中访问API链接时,它总是工作的。所以后端看起来不错,不确定问题出在哪里

编辑1:我注意到,当我使用谷歌chrome开发工具检查请求时,得到的是一个空对象(有时也是),但当我直接用浏览器点击API时,一切正常,我在控制台中没有收到任何错误,但我猜可能是标题或cookie问题。如果有人能帮忙,我将不胜感激


编辑2:我发现,如果我等待几秒钟,然后执行该方法,一切正常,只有在从mounted()调用
getHotelsByCityName
时才会出现问题
函数
或页面加载后立即执行的任何其他方法。

按F12或ctrl+shift+I打开浏览器上的开发人员工具。然后切换到
网络
面板,检查浏览器发送的请求和服务器发送的结果


我认为
getHotelsByCityName()
应该写入Vue中的
创建的
装入的
部分,以便在加载页面时获取数据。

然后用于异步等待

<script>
    axios.defaults.headers.common['Content-Type'] = 'application/json'

    var app = new Vue({
        el: '#app',
        methods: {
            getHotelsByCityName: async function () {

               await axios.get('localhost/api/hotels').then(resp => {
                  console.log(resp)
               })
                
            }
        },
    })
</script>

axios.defaults.headers.common['Content-Type']='application/json'
var app=新的Vue({
el:“#应用程序”,
方法:{
getHotelsByCityName:异步函数(){
等待axios.get('localhost/api/hotels')。然后(resp=>{
控制台日志(resp)
})
}
},
})

我将编辑该问题,以包含更多关于该问题的详细信息。您现在可以检查编辑,谢谢。我编辑该问题是为了添加更多详细信息,异步等待不是我问题的原因。@Tarek,您是否与postman一起测试了后端api?如果是这样,我相信它是异步等待问题。您可以在数据返回之前控制台响应。为什么你不知道该怎么处理数据,但你不知道该怎么处理,同样的问题,我第一次刷新页面时它工作了,第二次它没有检查状态200?请准确输入您的代码。是的,我得到了200个状态代码,我认为问题在于当从vuejs中的mount函数调用async wait时,它会立即返回
<script>
    axios.defaults.headers.common['Content-Type'] = 'application/json'

    var app = new Vue({
        el: '#app',
        methods: {
            getHotelsByCityName: async function () {

               await axios.get('localhost/api/hotels').then(resp => {
                  console.log(resp)
               })
                
            }
        },
    })
</script>