浅析$.getJSON异步请求和同步请求_javascript技巧

先说一下我遇到的问题吧,我之前的一个函数想调用上一个函数的返回值,但是它的返回值一直为空,后来翻了一些资料才明白是异步请求在作怪,不多说,看例子,这是我之前有返回值函数的代码:

function get_no_order_array() {
  var order_info = show_order();
  var order = []; 

  $.getJSON("../JSON/customers.json", function (date) { 

    date["man"].forEach(function (person) {
      if (order_info.k_obj[person] == undefined) {
        order.push(person);
      }
    })
  }); 

  return order;
}

后来发现打印的数组order 一直为空,以下是改正后的代码:

function get_no_order_array() {
  var order_info = show_order();
  var order = [];
  $.ajaxSettings.async = false;//在执行之前加$.ajaxSettings.async = false;  (同步执行)
  $.getJSON("../JSON/customers.json", function (date) { //<span style="line-height: 1.5;">$.getJSON不懂的话可以看一下我之前的博客,或是专门学习一下  “JSON”</span>
date["man"].forEach(function (person) {
      if (order_info.k_obj[person] == undefined) {
        order.push(person);
      }
    })
  });
  $.ajaxSettings.async = true;//执行你的代码之后及时恢复为$.ajaxSettings.async = true; (异步执行)
  return order;
}

在循环之前加一个$.ajaxSettings.async = false;    表示同步执行,这样他就会按照顺序执行了。

同时执行多个$.getJSON() 数据混乱的问题的解决

在执行之前加$.ajaxSettings.async = false;    (同步执行)

执行你的代码之后及时恢复为$.ajaxSettings.async = true; (异步执行)

不然影响别的地方的需要异步执行的代码。

example:

$.ajaxSettings.async = false;

$.getJSON(url, data, function(data){ });

$.getJSON(url, data, function(data){ });

$.getJSON(url, data, function(data){ });

......

$.ajaxSettings.async = true;

以上这篇浅析$.getJSON异步请求和同步请求就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索json异步请求
javascript 异步请求、ajax异步请求返回json、json异步请求、ajax异步请求json数据、ajax json 异步请求,以便于您获取更多的相关知识。

时间: 2024-08-08 02:17:40

浅析$.getJSON异步请求和同步请求_javascript技巧的相关文章

javascript 文件的同步加载与异步加载实现原理_javascript技巧

HTML 4.01 的script属性 charset: 可选.指定src引入代码的字符集,大多数浏览器忽略该值. defer: boolean, 可选.延迟脚本执行,相当于将script标签放入页面body标签的底部,js脚本会在document的DOMContentLoaded之前执行.除IE和较新版本的Firefox外,其他浏览器并未支持. language: 已废弃.大部分浏览器会忽略该值. src: 可选.指定引入的外部代码文件,不限制后缀名. type: 必选.指定脚本的内容类型(M

JS JSOP跨域请求实例详解_javascript技巧

在项目开发中遇到跨域的问题,一般都是通过JSONP来解决的.但是JSONP到底是个什么东西呢,实现的原理又是什么呢.在项目的空闲时间可以好好的来研究一下了. 1.什么是JSONP? 要了解JSONP,不得不提一下JSON,那么什么是JSON? JSON is a subset of the object literal notation of JavaScript. Since JSON is a subset of JavaScript, it can be used in the langu

js实现对ajax请求面向对象的封装_javascript技巧

AJAX 是一种用于创建快速动态网页的技术.通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. 在js中使用ajax请求一般包含三个步骤:               1.创建XMLHttp对象               2.发送请求:包括打开链接.发送请求               3.处理响应 在不使用任何的js框架的情况下,要想使用ajax,可能需要向下面一样进行代码的编写 <span style=&qu

分享JavaScript监听全部Ajax请求事件的方法_javascript技巧

若Ajax请求是由jQuery的$.ajax发起的,默认情况下可以使用 jQuery的Global Ajax Event Handlers监听到Ajax事件,然而我遇到的却是用原生JavaScript发起的Ajax请求,所以这种方法行不通. 然后呢,还有其他方法,比如说 Pub/Sub,但是这个发起请求的 js 代码我是无法改动的,也就不存在向代码里添加 publish 的问题.同理,jQuery 的 .bind 和 .trigger 也无法使用. 最后,决定使用直接 override XMLH

JSONP跨域请求实例详解_javascript技巧

JSOP简介 JSONP(JSON with Padding)是JSON的一种"使用模式",可用于解决主流浏览器的跨域数据访问的问题.由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的<script> 元素是一个例外.利用 <script> 元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 资料,而这种使用模式就是所谓的 JSONP.用 JSON

在JavaScript中获取请求的URL参数_javascript技巧

当然我们可以在后台中获取参数的值,然后在前台js代码中获取变量的值,具体做法请参考我的这篇文章:JavaScript获取后台C#变量以及调用后台方法. 其实我们也可以直接在js中获取请求的参数的值,通过使用window.location.search可以获取到当前URL的?号开始的字符串,如前面的链接获取到的search为?id=001.再对获取的字符串进行处理,就可以获取到参数的值了. 复制代码 代码如下: function getUrlParam(name) { var reg = new

Javascript Request获取请求参数如何实现_javascript技巧

复制代码 代码如下: String.prototype.getParameter = function (key) { var re = new RegExp(key + '=([^&]*)(?:&)?'); return this.match(re) && this.match(re)[1]; }; 测试代码: 复制代码 代码如下: <script type="text/javascript"> <!-- String.prototy

js每隔5分钟执行一次ajax请求的实现方法_javascript技巧

一个页面好像只能有一个 window.onload=function(){},所以要有多个事件,这样写就好了 复制代码 代码如下: window.onload=function(){ //假设这里每个五分钟执行一次test函数 publicBusi(); personBusi(); } function publicBusi(){ setTimeout(personBusi,1000*60*7);//这里的1000表示1秒有1000毫秒,1分钟有60秒,7表示总共7分钟 $.post('${ba

ie下$.getJSON出现问题的解决方法_javascript技巧

前提:需导入相关js文件jquery.js $.post(url,data,success(data, textStatus, jqXHR),dataType) url:必需.规定把请求发送到哪个 URL. data:可选.映射或字符串值.规定连同请求发送到服务器的数据. success(data, textStatus, jqXHR):可选.请求成功时执行的回调函数. dataType:默认执行智能判断(xml.json.script 或 html). $.getJSON(url,data,s