吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1533|回复: 8
收起左侧

[已解决] jQuery getJSON()

[复制链接]
平淡最真 发表于 2020-12-2 23:49
本帖最后由 平淡最真 于 2020-12-3 20:18 编辑

[JavaScript] 纯文本查看 复制代码
a=$.getJSON("www.baidu.com");a.responseText;

这样返回undefined
[JavaScript] 纯文本查看 复制代码
a=$.getJSON("www.baidu.com");

enter  然后再输入
[JavaScript] 纯文本查看 复制代码
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/

免费评分

参与人数 1吾爱币 +1 收起 理由
平淡最真 + 1 热心回复!

查看全部评分

 楼主| 平淡最真 发表于 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数据,既然有这个前提, 那么服务端(整个网页)的数据不就是你想要的结果么,也不需要纠结了不是么.

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
平淡最真 + 1 + 1 热心回复!

查看全部评分

fynier 发表于 2020-12-3 08:45
[JavaScript] 纯文本查看 复制代码
a=$.getJSON("www.baidu.com");//ajax为异步请求,不会等你请求完了,再执行下一句。
a.responseText;//这个对象是ajax请求完毕后才会返回,但执行这句时,ajax还未完成,所以此时这个对象是undefined。但如果你过个1s手动执行这句时,ajax早就请求完了,也就解释了为什么每次你手动执行就能获取到对象。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
平淡最真 + 1 + 1 热心回复!

查看全部评分

风中瞎跑 发表于 2020-12-3 09:42
非得用getJSON么,如果只是为了拿到responseText的值而已可以用$.get
[JavaScript] 纯文本查看 复制代码
$.get("www.baidu.com",function(res){
		console.log(res)
	})

值为:
[Asm] 纯文本查看 复制代码
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;">访问<a  target="_blank">DCloud官网</a>或<a  target="_blank">社区</a></p> -->
		

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

免费评分

参与人数 1热心值 +1 收起 理由
平淡最真 + 1 热心回复!

查看全部评分

风中瞎跑 发表于 2020-12-3 09:54
刚测试了下getJSon默认是异步请求的,主程序到这里会再创建一个线程去处理继续往下执行所以a是空值,不让它异步就行了
[JavaScript] 纯文本查看 复制代码
$.ajaxSettings.async = false; 
	let a= $.getJSON("www.baidu.com");
	console.log(a.responseText)

这样就有值了

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
平淡最真 + 1 + 1 谢谢@Thanks!是我需要的。感谢。

查看全部评分

爱欣呐 发表于 2020-12-3 10:19
上面的都应该说的比较清楚了
Emberless 发表于 2020-12-3 10:39
fynier 发表于 2020-12-3 08:45
[mw_shl_code=javascript,true]a=$.getJSON("www.baidu.com");//ajax为异步请求,不会等你请求完了,再执行 ...

言简意赅,点评精准。楼主还是没有理解js的异步呀
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 09:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表