平淡最真 发表于 2020-12-2 23:49

jQuery getJSON()

本帖最后由 平淡最真 于 2020-12-3 20:18 编辑

a=$.getJSON("www.baidu.com");a.responseText;
这样返回undefined
a=$.getJSON("www.baidu.com");
enter然后再输入
a.responseText
这样就有返回。
百度试了很多方法没解决。

就算在浏览器F12怎么样修改才不需要分两次输入?

bookaccount 发表于 2020-12-3 00:17

getJson是ajax请求,可以用$.getJSON("www.baidu.com", function(data) {//处理返回数据 });
参见jquery api文档:https://api.jquery.com/jquery.getjson/

平淡最真 发表于 2020-12-3 00:33

bookaccount 发表于 2020-12-3 00:17
getJson是ajax请求,可以用$.getJSON("www.baidu.com", function(data) {//处理返回数据 });
参见jquery...

这个我能查到的,但是没理解。//处理返回数据换成 alert("123")都没反应   里面写什么都是返回整个网页的数据

cube 发表于 2020-12-3 00:52

平淡最真 发表于 2020-12-3 00:33
这个我能查到的,但是没理解。//处理返回数据换成 alert("123")都没反应   里面写什么都是返回整个网页 ...

首先,getJson是异步请求, 需要在回调函数中处理数据.
其次"alert(123)没反应" 与 "写什么都是返回整个网页的数据"是相悖的. 无返回才会没反应,有返回就会执行alert.
另外,使用getJSON,表示你假想服务端返回json数据,既然有这个前提, 那么服务端(整个网页)的数据不就是你想要的结果么,也不需要纠结了不是么.

fynier 发表于 2020-12-3 08:45

a=$.getJSON("www.baidu.com");//ajax为异步请求,不会等你请求完了,再执行下一句。
a.responseText;//这个对象是ajax请求完毕后才会返回,但执行这句时,ajax还未完成,所以此时这个对象是undefined。但如果你过个1s手动执行这句时,ajax早就请求完了,也就解释了为什么每次你手动执行就能获取到对象。

风中瞎跑 发表于 2020-12-3 09:42

非得用getJSON么,如果只是为了拿到responseText的值而已可以用$.get$.get("www.baidu.com",function(res){
                console.log(res)
        })
值为:
01.html:13 <!DOCTYPE html>
<html>
        <head>
                <meta charset="utf-8" />
                <title></title>
                <meta name="viewport" content="width=device-width, initial-scale=1">
        </head>
        <body>
                <p style="width: 100%;text-align: center;font-size: 140px;height: 40px;">404</p>
                <p style="width: 100%;text-align: center;font-size: 40px;">Page Not Found</p>
                <!-- p style="width: 100%;text-align: center;font-size: 18px;">访问<atarget="_blank">DCloud官网</a>或<atarget="_blank">社区</a></p> -->
               

        <script>document.write('<script src="//' + (location.host || 'localhost').split(':') + ':35929/livereload.js?snipver=1"></' + 'script>')</script><script>document.addEventListener('LiveReloadDisconnect', function() { setTimeout(function() { window.location.reload(); }, 500); })</script></body>
</html>

风中瞎跑 发表于 2020-12-3 09:54

刚测试了下getJSon默认是异步请求的,主程序到这里会再创建一个线程去处理继续往下执行所以a是空值,不让它异步就行了$.ajaxSettings.async = false;
        let a= $.getJSON("www.baidu.com");
        console.log(a.responseText)
这样就有值了

爱欣呐 发表于 2020-12-3 10:19

上面的都应该说的比较清楚了

Emberless 发表于 2020-12-3 10:39

fynier 发表于 2020-12-3 08:45
a=$.getJSON("www.baidu.com");//ajax为异步请求,不会等你请求完了,再执行 ...

言简意赅,点评精准。楼主还是没有理解js的异步呀
页: [1]
查看完整版本: jQuery getJSON()