美文网首页
一个s让我花费了一两个小时 jquery 中$.ajaxSetu

一个s让我花费了一两个小时 jquery 中$.ajaxSetu

作者: sysdzw | 来源:发表于2022-03-11 14:22 被阅读0次

我们都知道jquery中的ajax或者getJSON调用默认是异步的,但是异步的话会有个问题,比如我们对外面的变量赋值会不成功,因为代码不管getJSON方法是否执行完,继续走到下面了,那么变量就不会赋值成功。如果我们期望执行完getJSON再执行下面的代码。那么就需要设置同步模式。方法很简单,在getJSON调用的前插入下面这一行即可:

$.ajaxSetup({async:false});
image.gif

完整试验代码如下:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test</title>
</head>
<body>
<script src="//libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">
var s=0;
var data = {url: "xxx"};
$.ajaxSetup({async:false});
$.getJSON(url, data, function (backdata) {
    s=666;
    alert(s + " ---1---");
});
alert(s + " ---2---");
</script>
</body>
</html>
image.gif

我们期望的是:
先显示666 ---1---,然后再显示666 ---2---

事实上是:
先显示0 ---2---,然后再显示666 ---1---

显然并没有同步,反复试验都是如此,以上代码已经把无关代码都拿掉剩下最精简后的测试代码了。百度上导出搜,确定操作是正确的,要同步就是加那一行。于是我想是不是在getJSON中这个局部变量生存周期只在自己这个内部啊,可是以前正常用过啊。以前常用的代码怎么就不行了?可以确定以前是可以正常同步执行的。难道是我引用的jQuery版本太旧?看了下是1.8版本并不旧。

最奇怪的是,这个代码本来是从另外一个站点迁移来的,在另外一个站点是正常的,在这个站点怎么就运行不正常了呢?本来准备将jQuery版本用到最新,后来发现这个正常的站点也是用的1.8版本。

于是有捣鼓很久。。。火狐谷歌各个浏览器反复试。。。two hours later 搞技术就是这么折腾

最终我突然意识到两个站点的差别,一个是https的一个是http,是不是这里的差异呢?因为这个导致浏览器的限制策略差别?

于是给站点安装个ssl证书,配置好https,果然好了!天啊,一个s浪费了那么久的时间!可是以前http站点是可以正常用的啊,翻遍网络也没说到jQuery在https下才能同步。难道的最近改的么?找了找好像是在2018年开始有这策略的,不确定,有待考证。

相关文章

  • 让我感到幸福的事

    感谢浅浅老师花费了两个多小时的时间给我做1对1的梳理,和专业的指导。这两个多小时像是黑暗中的一颗明灯,让迷茫中的我...

  • 《八佰》

    哎,浪费了两个小时。

  • 浪费了将近两个小时

    一个编剧混乱,主题不明确,动作拙劣的电影!用生命中宝贵的时间看一部烂片真是烦透了!

  • JQuery调用Asp.Net MVC中Controller中的

    概述一直做C/S开发的我也研究研究JQuery,下面将记录JQuery执行Controller中的有参数和无参数的...

  • 11 Demo: an Ajax-powered contact

    This chapter covers Effects with jQuery jQuery's utility ...

  • webpack的使用

    安装jquery npm install jquery -S 导包:import $ from "jquery" ...

  • 寒假成长计划第八天

    写完这个题目的时候,我看的电影已经开演了,害得我让电脑白白浪费了两个小时的电,《七月与安生》一个关于两个朋友的故事...

  • jQuery 之 extend 方法使用

    方法介绍 jQuery 的 API 手册中,extend 方法挂载在 jQuery 和 jQuery.fn 两个不...

  • 2018-01-12

    typescript使用jquery的步骤 1、安装jquery插件:npm install jquery --s...

  • [18]Nicole鱼—2018-08-03

    今天抽空听了S曾讲过的《一小时教你建立英语核心技能树》。一个小时是S说的一个小时,不是英语小菜鸟花一个小时就...

网友评论

      本文标题:一个s让我花费了一两个小时 jquery 中$.ajaxSetu

      本文链接:https://www.haomeiwen.com/subject/dbgkdrtx.html