zoukankan      html  css  js  c++  java
  • JS-重要知识点答疑

    【ajax同步、异步】

    1.什么是同步请求:(false)
           同步请求即是当前发出请求后,浏览器什么都不能做,必须得等到请求完成返回数据之后,才会执行后续的代码,相当于是排队,前一个人办理完自己的事务,下一个人才能接着办。也就是说,当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面处于一个假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面解除假死状态。 
    2.什么是异步请求:(true)
           异步请求就当发出请求的同时,浏览器可以继续做任何事,Ajax发送请求并不会影响页面的加载与用户的操作,相当于是在两条线上,各走各的,互不影响。
    一般默认值为true,异步。异步请求可以完全不影响用户的体验效果,无论请求的时间长或者短,用户都在专心的操作页面的其他内容,并不会有等待的感觉。

    参考:https://www.cnblogs.com/yangguoe/p/8461932.html

    【ajax提交data类型】

    1、问题来源

    今天使用ajax时,发现get传data时,传递json字符串时传不过去参数,所以做了一些实验测试ajax的get和post的传递data时的不同。

    2、概念

    ajax有三种传递传递data的方式:

    • json格式
    • json字符串格式
    • 标准参数模式

    1.json格式

    形如: 
    {“username”:”chen”,”nickname”:”alien”}

    ajax:

    $.ajax({
        type:"post",
        url:"/test/saveUser",
        data:{"username":"chen","nickname":"alien"},
        dataType:"json",
        success: function(data){
            console.log(data);
        }
    });

    2.json字符串 
    形如: 
    “{“username”:”chen”,”nickname”:”alien”}” 或者JSON.stringify({“username”:”chen”,”nickname”:”alien”})

    ajax:

    $.ajax({
        type:"post",
        url:"/test/saveUser",
        data:JSON.stringify({"username":"chen","nickname":"alien"}),
        contentType:"json/application"
        dataType:"json",
        success: function(data){
            console.log(data);
        }
    });

    用此格式get请求参数传递不过去,不会把json串解析成参数 
    而且需要添加 contentType:”json/application”

    3.标准参数模式

    形如: 
    “username=chen&nickname=alien”

    ajax:

    $.ajax({
        type:"post",
        url:"/test/saveUser",
        data:"username=chen&nickname=alien",
        dataType:"json",
        success: function(data){
            console.log(data);
        }
    });

    $(“#form1”).serialize() 就是把表单的数据拼成这个格式的字符串!

    3、总结

    post请求能用1、2、3类型传递参数 
    get请求能用1、3类型传递参数 
    $(“#form1”).serialize() 是将对应表单中的input的name和value进行拼装,最后拼成3类型的字符串

     【$(function)相关】

    场景描述:

    ①$(function(){})外部调用$(function(){})内部的方法时报错,是没搞懂$(function(){})执行时间导致;

    ②多个$(function(){})时调用方法时,A调B里面的方法时报错,是没搞懂$(function(){})内部的变量及函数作用域导致;

    $(function(){})的执行时间

    参考地址:https://blog.csdn.net/sadleaflzh/article/details/81584144

    原因大体描述:

    $(function() {}) 是$(document).ready(function()的简写。

    DOM加载完成即页面所有的html标签(包括图片等)都加载完了,即浏览器已经响应完,全部展现到浏览器界面上之后,执行$(function() {})中的内容;

    多个$(function(){})的函数调用问题

    参考地址:https://www.cnblogs.com/gaidalou/p/9304145.html

    原因大体描述:

    每个$(function(){})都是一个函数,函数都有自己的作用域,匿名函数相当于私有的函数,需要放到外边当做全局函数;

  • 相关阅读:
    Ubuntu下手动安装vscode
    VMware Tools安装后设置自动挂载解决共享文件夹无法显示的问题
    VMware Tools安装方法及共享文件夹设置方法
    JavaScript原始类型转换和进制转换
    Javascript的数据类型(原始类型和引用类型)
    设计模式(六)观察者模式
    设计模式(五)之适配器模式
    设计模式(四)注册模式 解决:解决全局共享和交换对象
    设计模式(三)单例模式
    设计模式(二)之策略模式
  • 原文地址:https://www.cnblogs.com/sylvia-Camellia/p/11150173.html
Copyright © 2011-2022 走看看