console.log(a) 里面有status这个值,为什么console.log

console.log(a); 里面有status这个值,为什么console.log(a.status)是undefined呢;
里面的这些值、方法要如何访问?

https://img3.mukewang.com/5c875984000165bd08000506.jpg


<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8" />

    <title>Document</title>

    <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>

    <script src="https://cdn.bootcss.com/vue/2.5.3/vue.js"></script>


</head>

<body>

<div id="app">

    {{value}}

</div>

<script type="text/javascript">

     new Vue({

        el:"#app",

        data:{},

        computed:{

            value:function(){

                var url="https://easy-mock.com/mock/5a61abf341d8910ea886ec50/searchLists";

                var a= $.get(url,{},function(result){

                     return result;

                })

                console.log(a);   //打印出来变量a中有status这个值,为什么a.status是undefined,要如何访问里面a中里面的数据呢

                console.log(a.status);

                return a.status;

            }

        }

     })

</script>

</body>

</html>


jeck猫
浏览 1166回答 4
4回答

互换的青春

这样是可以的:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a.done(() => {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; console.log(a.status);//200&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; console.log(a);//a.readystate===4;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; });这个原因就很明显了,你直接访问的话,浏览器还未或正在发送 xhr 请求,请求还没有完成,自然是访问不到 a.status 的,要访问需要在请求完成后访问才行,jq 的 ajax.done(fn) 就是在请求完成且成功时才去执行 fn 的这个时候才能访问到数据;如果是原生js就是要监听 onreadystatechange 事件,当 readystate 由 1到4时,请求才完成,这个时候才能访问到 a.status,虽然这个时间很短,但是你直接在请求的代码后面访问肯定是不行的,jq 的 .done 然后就相当于在请求完成后且成功时才调用里面的回调,原理是一样的;你看截图:最初直接访问 a ,readystate 为 1;请求成功后访问 a ,readystate 为 4;

慕尼黑5688855

的确是因为异步造成的。你执行console.log()方法的时候,ajax还没有成功返回.所以是undefined,至于为什么你控制台展开能看到status为200,其实很简单。chrome控制台显示的a是一个指针,当你展开时,它才取访问它的值。而当你点击展开时,ajax早已经成功返回了。&nbsp;你看,当你打印时,状态还是1,当你点击展开后,状态为4,说明AJAX已执行成功

慕码人8056858

state是个function

慕田峪7331174

好像是因为异步取值, console.log的时候数据还不存在, 你试试 if(a.status !=== undefined) { console.log(a.status) }可不可以
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript