小工具      在线工具  汉语词典  dos游戏  css  js  c++  java

LayUI渲染数据失败之Ajax异步交互

前端开发,layui,ajax,交互 额外说明

收录于:17天前

案件

在layui中调用jquery的ajxa,返回数据,赋值给全局变量,通过DOM渲染到页面。

//定义变量
let sale;

//定义请求
$.ajax({
    
    type: "GET",
    url: "http://localhost:8080/product/sale",
    data: null,
    dataType: "json",
    success: function (data) {
    
        console.log(data)
        //全局变量赋值
        sale = data
    }
});

document.getElementById("saleData") = sale

根据js单线程执行,页面上会出现数据,但事实是这样的

在这里插入图片描述
在这里插入图片描述
查了资料才知道:

  1. JS执行机制是单线程的。但它不必逐行执行。
  2. JS执行分为同步任务和异步任务。

按照这种分类方法,JS的执行流程为:

首先,判断JS是同步还是异步,同步进入主线程,异步进入Event table(相当于等待队列)

其次,异步任务在事件表中注册一个函数。当满足某些条件时,它被推入事件队列。

最后进入主线程后就会执行同步任务。直到主线程空闲时,才会去Event队列中查看是否有可执行的异步任务。如果有,就会推送到主线程执行。

也就是说,执行js时,首先判断是同步任务还是异步任务。异步任务等待就绪队列,先执行同步任务。

JS同步执行、异步执行

浏览器加载 HTML、JS 和 CSS 的顺序

Ajax默认是异步任务,默认延迟执行。

//定义变量
let sale;

console.log(1)

//定义请求
$.ajax({
    
    type: "GET",
    url: "http://localhost:8080/product/sale",
    data: null,
    dataType: "json",
    success: function (data) {
    
        console.log(data)
        //全局变量赋值
        sale = data
        console.log(2)
    }
});

console.log(sale)
document.getElementById("saleData").innerText = sale
console.log(3)

在这里插入图片描述
如图可以看出ajax是最后执行的,而此时表格和内容都已渲染好了再赋值就没有意义了。那么如何赋值呢?

  • 将ajxa改为同步任务(不推荐)

  • 将渲染方法放在Ajax内部进行异步执行


console.log(1)

//定义请求
$.ajax({
    
    type: "GET",
    url: "http://localhost:8080/product/sale",
    data: null,
    dataType: "json",
    success: function (data) {
    
        //console.log(data)
        updateSaleData(data)
        console.log(2)
    }
});

function updateSaleData(vo){
    
    document.getElementById("saleData").innerText = vo
}

console.log(3)

在这里插入图片描述
在这里插入图片描述

. . .

相关推荐

额外说明

PHP获取订单的物流信息

前一阵子用PHP取订单号的物流信息,用的是极速数据的一个插件,收费的。这个是其调用的接口链接:http://www.jisuapi.com/api/express。接口很简单很容易看懂,处理起来也不麻烦。麻烦的有两点:1、这个是收费的,49元/10000

额外说明

爪哇

JAVA 笔记 这一篇呢是我在学校中Java双语课上的一些学习笔记,本来是前边还有五节的,可恨我上次下课直接关机没保存。。。呜呜呜 不过在以后的学习中我还是会继续把一些笔记放着这里,希望会有所帮助,对你也对我! 6.Encapsulation —— pa

额外说明

Mybatis映射文件 — 常用标签及特殊字符的处理

目录 一、Mybatis映射文件 — resultMap标签 (1)新建一个Teacher类,如下 (2)新建一个TeacherMapper持久层接口 (3)新增TeacherMapper.xml  Mybatis映射文件 (4)新增testTeache

额外说明

MyBatis---MyBatis的增,删,改,查实现

mybatis的增,删,改,查实现 1、创建一个UserDao接口 public interface UserDao { // 保存用户 public int saveUser(User user); // 更新用户 public int u

额外说明

Final知识点总结

1.final:最终的,final可以用来修饰的结构,类、方法、变量。 2.final用来修饰一个类:此类不能被其他类所继承 比如。String类、System类、StringBuffer类。 3.final用来修饰方法:来明此方法不可以被重写,Obje

额外说明

flex键盘监听事件

<?xml version="1.0" encoding="utf-8"?>    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicati

额外说明

Python 第七节 第十课

[toc] 类属性和类方法 类属性 类属性是从属于 "类对象" 的属性, 也称为 "类变量". 由于, 类属性从属于类对象, 可以被所有实例对象共享. 类属性的定义方式:     class  类名:         类变量名 = 初始值 在类中或者类的

额外说明

Spring中Bean生命周期管理的几种方法

  spring是java编程最常用的IoC框架,我们在平常的使用中会将用到的bean全部注入到spring的容器中,让spring帮助我们管理,在有些编码的场景中,我们需要人为的控制bean的生命周期,本文总结了几种控制spring中bean生命周期的

额外说明

阿里云获取Uid下ECS资源工具类

import com.aliyun.credentials.Client; import com.aliyun.ecs20140526.models.DescribeInstancesResponse; import com.aliyun.ecs2014

ads via 小工具