Ajax-1

jQuery 1.2 API与Ajax自动提示实现指南 本文还有配套的精品资源,点击获取 简介:jQuery是一个JavaScript库,它通过简化的API和Ajax技术增强了前端开发。在本主题中,我们将深入探讨jQuery 1.2版本的关键API,并展示如何利用这些API结合Ajax技术实现动态的自动提示功能。我们将通过代码示例,详细说明选择器、DOM操作、属性与事件处理、动画效果以及如何在输入框中实现基于Ajax的自动提示。... 阅读详情

同步与异步

同步代码

  • 逐行执行,需要原地等待结果后,才继续向下执行

异步代码

  • 调用后耗时,不阻塞代码继续执行(不必原地等待),在将来完成后触发一个回调函数

认识 AJAX

什么是 AJAX

  • AJAX 是 异步的JavaScript和XML [Asynchronous JavaScript And XML]
  • 简单点说,就是使用XMLHttpRequest对象与服务器通信
  • 它可以使用 JSON, XML, HTML 和 text 文本等格式发送和接收数据
  • AJAX 最吸引人的是它"异步"的特性,也就是说它能在不刷新页面的情况下与服务器进行,交互数据,或更新页面

如何使用 AJAX

  • 先学会使用axios库,与服务器进行数据交互
  • 再学习XMLHttpRequest对象的使用,了解 AJAX的底层原理

使用 axios

基本使用

语法:
	1.引入 axios.js:https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js
	2.使用 axios 函数:
		2.1 传入配置对象
		2.2 使用 .then 回调函数接收结果,并做后续处理
<body>
    <!-- 引入 axios.js 库 -->
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script>
        axios({
            url: 'http://datavmap-public.oss-cn-hangzhou.aliyuncs.com/areas/csv/100000_province.json',
        }).then((result) => { console.log(result.data.rows) })
    </script>
</body>

核心配置

请求方法

<body>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script>
        axios({
            url: 'http://datavmap-public.oss-cn-hangzhou.aliyuncs.com/areas/csv/100000_province.json',
            
            // 常用请求方法: get、post
            method: 'get'   // 由于默认请求方法是get,因此此行可以省略不写
        }).then((result) => { console.log(result.data.rows) })
    </script>
</body>

查询参数

<body>
    <ul></ul>

    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script>
        axios({
            url: 'https://hmajax.itheima.net/api/city',
            method: 'get',
            params: {
                pname: prompt('请输入省份:')
            },
        }).then((result) => {
            // 筛选有效的数据
            cityArr = result.data.list
            // 将数据展示到页面上
            const str = cityArr.map(ele => `<li>${ele}</li>`).join('')
            document.querySelector('ul').innerHTML = str
        })
    </script>
</body>

提交数据

<body>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script>
        axios({
            url: 'https://hmajax.itheima.net/api/register',
            method: 'post',
            // 要提交的数据
            data: {
                username: prompt('请输入注册账号'),
                password: prompt('请输入密码')
            }
        }).then((result) => {
            alert(result.data.message)
        })
    </script>
</body>

错误处理

处理格式

    <script>
        axios({
            //请求选项
        }).then(() => {
            // 处理数据
        }).catch(error => {
            // 处理错误
        })
    </script>

具体演示

<body>
    <div>
        <label>注册账号:<input type="text"></label><br>
        <label>填写密码:<input type="password"></label>
    </div>
    <button>注册</button>

    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script>
        const input = document.querySelector('input[type=text]')
        const password = document.querySelector('input[type=password]')
        const button = document.querySelector('button')

        button.addEventListener('click', () => {
            
            axios({
                url: 'https://hmajax.itheima.net/api/register',
                method: 'post',
                // 要提交的数据
                data: {
                    username: input.value,
                    password: password.value
                }
            }).then((result) => {
                alert(result.data.message)
            }).catch(error => {
                alert(error.response.data.message)
            })

        })
    </script>
</body>

XMLHttpRequest

认识 XHR

  • XHR 即 XMLHttpRequest
  • XMLHttpRequest 对象用于与服务器交互
  • 通过 XMLHttpRequest 可以在不刷新页面的情况下,请求特定URL,获取数据
  • 这允许网页在不影响用户操作的情况下,更新页面的局部内容
  • XMLHttpRequest 在 AJAX 编程中被大量使用
  • 我们使用的 axios 是一个封装好的库,它的底层使用 XMLHttpRequest 与服务器交互

基本使用

<body>
    <ul></ul>

    <script>
        // 1. 创建XMLHttpRequset对象
        const xhr = new XMLHttpRequest()
        // 2. 配置请求方法和URL地址
        xhr.open('GET', 'https://hmajax.itheima.net/api/province')
        // 3. 提前准备好一个监听loadend事件,用来接收响应结果
        xhr.addEventListener('loadend', () => {
            // 数据处理与筛选
            const result = JSON.parse(xhr.response)
            const arr = result.list
            // 将数据渲染到页面
            document.querySelector('ul').innerHTML =
                arr.map(ele => `<li>${ele}</li>`).join('')
        })
        // 4.向服务端发送请求
        xhr.send()
    </script>
</body>

查询参数

<body>
    <ul></ul>

    <script>
        // 目标:使用XHR携带查询参数
        const xhr = new XMLHttpRequest()
        const goal = prompt('您要搜索的城市:')
        xhr.open('GET', `https://hmajax.itheima.net/api/city?pname=${goal}`)
        xhr.addEventListener('loadend', () => {
            const result = JSON.parse(xhr.response
            const arr = result.list
            // 将数据渲染到页面
            document.querySelector('ul').innerHTML =
                arr.map(ele => `<li>${ele}</li>`).join('')
        })
        xhr.send()
    </script>
</body>

数据提交

<body>
    <button class="reg-btn">注册用户</button>

    <script>
        // 目标:使用XHR实现数据提交,完成注册功能
        document.querySelector('.reg-btn').addEventListener('click', () => {
            const xhr = new XMLHttpRequest()
            xhr.open('POST', 'https://hmajax.itheima.net/api/register')
            xhr.addEventListener('loadend', () => {
                const result = JSON.parse(xhr.response)
                console.log(result)
            })
            
            // xhr设置请求头:告诉服务器内容类型(JSON字符串)
            xhr.setRequestHeader('Content-Type', 'application/json')
            // 准备要提交的数据
            const dataObj = {
                username: 'jackJack',
                password: '123456'
            }
            const dataStr = JSON.stringify(dataObj)     // 将数据对象转为JSON字符串
            // 设置好"请求体",并发送请求
            xhr.send(dataStr)
        })
    </script>
</body>

Promise

基本认识

Promise 对象用于表示一个异步操作的最终完成(或失败)的结果

    <script>
        // 1.创建Promise对象
        const p = new Promise((resolve, reject) => {
            
            // 2.执行异步任务
            // 任务执行成功,就调用:resolve(...) 从而触发 then() 执行
            // 任务执行失败,就调用:reject(...) 从而触发 catch() 执行
        })

        // 3.接收结果
        p.then(result => {
            // 成功
        }).catch(error => {
            // 失败
        })
    </script>

Promise 对象有三种状态

  • 待定状态------pending
  • 已兑现状态—fulfilled
  • 已拒绝状态—rejected
    <script>
        // 1.创建Promise对象(此时Promise对象处于pending状态,即:待定状态)
        const p = new Promise((resolve, reject) => {

            // Promise对象创建时,这里的代码都会执行了
            console.log('是这里先执行吗?');

            setTimeout(() => {
                
                resolve('模拟AJAX请求:结果成功!')   // 当执行完resolve(),此时Promise对象处于fulfilled状态,即:已兑现状态


                // reject(new Error('模拟AJAX请求:结果失败!'))    // 当执行完reject(),此时Promise对象处于rejected状态,即:已拒绝状态

            }, 2000)
        })
        console.log('还是说,这里先执行呢?')

        // 3.获取结果
        p.then(result => {
            console.log(result);
        }).catch(error => {
            console.log(error);
        })
    </script>

具体使用

需求:使用 Promise + XHR 获取省份列表

<body>
    <ul></ul>

    <script>
        // 1. 创建Promise对象
        const p = new Promise((resolve, reject) => {
            // 2. 执行XHR异步代码,获取省份列表
            const xhr = new XMLHttpRequest()
            xhr.open('GET', 'https://hmajax.itheima.net/api/province')
            xhr.addEventListener('loadend', () => {
                // console.log(xhr.status)  // 响应状态码
                if (xhr.status >= 200 && xhr.status < 300) {
                    resolve(JSON.parse(xhr.response))
                } else {
                    reject(new Error(xhr.response))
                }
            })
            xhr.send()
        })

        // 正常要执行的代码(非异步的)
        console.log('假设这里')
        console.log('有着很多很多的')
        console.log('代码需要执行')
        console.log('-------------')

        // 3. 返回结果
        p.then(result => {
            // 先给用户提前告知一声结果
            alert('省份数据获取成功!')
            // 然后将数据渲染到页面上
            arr = result.list
            document.querySelector('ul').innerHTML =
                arr.map(ele => `<li>${ele}</li>`).join('')
        }).catch(error => {
            // 先给用户提前告知一声结果
            alert('省份数据获取失败!')
            // 错误对象要用console.dir详细打印
            console.dir(error)
            // 并且将关键的错误信息,显示到页面给用户看
            document.querySelector('ul').innerHTML = `${error.message}`
        })

        // 正常要执行的代码(非异步的)
        console.log('假设这里')
        console.log('有着很多很多的')
        console.log('代码需要执行')
        console.log('-------------')
    </script>
</body>

回调函数地狱

概念:在回调函数中嵌套回调函数,一直嵌套下去形成了回调函数地狱

缺点:

  • 代码可读性差
  • 异常无法捕获
  • 耦合性严重,牵一发动全身

例子:如下

<body>
    <div>
        <div class="province"></div>
        <div class="city"></div>
        <div class="area"></div>
    </div>
    
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script>
        // 获取省份
        axios({ url: 'http://hmajax.itheima.net/api/province' }).then(result => {
            const pname = result.data.list[0]
            document.querySelector('.province').innerHTML = pname
            // 获取城市
            axios({ url: 'http://hmajax.itheima.net/api/city', params: { pname: pname } }).then(result => {
                const cname = result.data.list[0]
                document.querySelector('.city').innerHTML = cname
                // 获取地区
                axios({ url: 'http://hmajax.itheima.net/api/area', params: { pname: pname, cname: cname } }).then(result => {
                    const area = result.data.list[0]
                    document.querySelector('.area').innerHTML = area
                })
            })
        })
    </script>
</body>

链式调用

基本认识

  • 一个 Promise对象 在它的 then() 方法 里可以 return 一个 新的 Promise对象

  • 利用好这个特性,就能串联下一个任务,实现链式调用

<body>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script>
        const p1 = new Promise((resolve, reject) => {
            // 模拟请求
            setTimeout(() => {
                resolve('湖北省')   // 2秒之后服务器成功返回了数据:"湖北省",通过resolve()传递给then()
            }, 2000)
        })

        const p2 = p1.then(result => {
            console.log(result)     // 输出传递过来的结果
            return new Promise((resolve, reject) => {
                // 模拟请求
                setTimeout(() => {
                    resolve('武汉市')   // 2秒之后服务器成功返回了数据:"武汉市",通过resolve()传递给then()
                }, 2000)
            })
        })

        const p3 = p2.then(result => {
            console.log(result) // 输出传递过来的结果
            return new Promise((resolve, reject) => {
                // 模拟请求
                setTimeout(() => {
                    resolve('武昌区')   // 2秒之后服务器成功返回了数据:"武昌区",通过resolve()传递给then()
                }, 2000)
            })
        })

        p3.then(result => {
            console.log(result) // 输出传递过来的结果
        })
    </script>
</body>

解决回调函数地狱

<body>
    <ul></ul>

    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script>
        // 防止变量污染
        (function () {

            // 定义变量,用来存储数据
            let province
            let city
            let area

            // 利用"链式调用"解决"回调函数地狱"
            let obj = axios({ url: 'http://hmajax.itheima.net/api/province' })  // 请求获取省份数据

            obj = obj.then(result => {
                console.log(result)     // 输出省份数据
                province = result.data.list[18]
                return axios({ url: 'http://hmajax.itheima.net/api/city', params: { pname: province } })  // 请求获取城市数据
            })

            obj = obj.then(result => {
                console.log(result)     // 输出城市数据
                city = result.data.list[0]
                return axios({ url: 'http://hmajax.itheima.net/api/area', params: { pname: province, cname: city } })  // 请求获取地区数据
            })

            obj.then(result => {
                console.log(result)     // 输出地区数据
                area = result.data.list[0]

                // 将数据显示到页面上
                document.querySelector('ul').innerHTML = `<li>${province}</li><li>${city}</li><li>${area}</li>`
            })
        })()
    </script>
</body>

Promise.all 静态方法

基本认识

概念:合并多个Promise对象,等待所有的Promise对象完成,才进行后续逻辑

  • 所有的Promise对象都成功,全体才算成功
  • 任意一个Promise对象失败了,全体都失败了

语法:如下

    <script>
        const p = Promise.all([Promise对象, Promise对象, ...])
        p.then(result => {
            // result结果: [Promise对象成功的结果, Promise对象成功的结果, ...]
        }).catch(error => {
            // 最先失败的Promise对象,抛出的异常
        })
    </script>

具体演示

<body>
    <ul></ul>

    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script>
        // 目标:实现将北京、上海、广州、深圳的天气同时展示到页面上

        // 1. 发起请求,得到Promise对象
        const bjPromise = axios({ url: 'http://hmajax.itheima.net/api/weather', params: { city: '110100' } })   // 北京Promise对象
        const shPromise = axios({ url: 'http://hmajax.itheima.net/api/weather', params: { city: '310100' } })   // 上海Promise对象
        const gzPromise = axios({ url: 'http://hmajax.itheima.net/api/weather', params: { city: '440100' } })   // 广州Promise对象
        const szPromise = axios({ url: 'http://hmajax.itheima.net/api/weather', params: { city: '440300' } })   // 深圳Promise对象

        // 2. 使用Promise.all,合并多个Promise对象
        const p = Promise.all([bjPromise, shPromise, gzPromise, szPromise])
        p.then(result => {
            console.log(result)
            // 将数据渲染到页面上
            document.querySelector('ul').innerHTML =
                result.map(ele => {
                    const info = ele.data.data
                    return `<li>[地区: ${info.area}]-[时间: ${info.date}]-[天气: ${info.weather}]</li>`
                }).join('')
        }).catch(error => {
            console.dir(error)
        })
    </script>
</body>

简易版 axios (过程)

需求:基于 Promise + XHR 封装 myAxios 函数

  • 回顾 axios 的功能
<body>
    <ul></ul>
    
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script>
        axios({

            url: 'https://hmajax.itheima.net/api/province',
            method: 'get'

        }).then(result => {

            // console.log(result)             // 返回数据对象
            // console.log(result.data.list)   // 筛选有效信息
            
            // 将数据渲染到页面
            const arr = result.list
            document.querySelector('ul').innerHTML =
                arr.map(ele => `<li>${ele}</li>`).join('')

        }).catch(error => {
            console.log(error)
        })
    </script>
</body>
  • 制作简易版的 axios
<body>
    <script>
        function myAxios(configObj) {
            // ------------函数体--------------

            // 函数第一步:创建Promise对象
            const p = new Promise((resolve, reject) => {

                // ----------------异步代码---------------------

                // 1.1 判断configObj是否有params属性
                if (configObj.params) {
                    // 1.2 使用URLSearchParams将"查询参数的对象"转换成"符合查询参数格式的字符串"
                    const paramsObj = new URLSearchParams(configObj.params)
                    const queryString = paramsObj.toString()
                    // 1.3 把查询参数字符串,拼接到URL后面
                    configObj.url += `?${queryString}`
                }

                // 2.1 准备好一个用于与服务器连接的xhr对象
                const xhr = new XMLHttpRequest()
                // 2.2 给xhr配置相关信息
                xhr.open(configObj.method, configObj.url)
                xhr.addEventListener('loadend', () => {
                    if (xhr.status >= 200 && xhr.status < 300) {
                        resolve(JSON.parse(xhr.response))
                    } else {
                        reject(new Error(xhr))
                    }
                })

                // 3.1 判断是否有data选项
                if (configObj.data) {
                    // 3.2 转换数据类型,准备好"数据体"
                    const jsonStr = JSON.stringify(configObj.data)
                    // 3.3 配置好"数据头"
                    xhr.setRequestHeader('Content-Type', 'application/json')
                    // 3.4 携带数据,向服务器发送"请求"
                    xhr.send(jsonStr)
                } else {
                    // 3.5 如果没有data选项,直接发送"请求"即可
                    xhr.send()
                }

                // ----------------异步代码---------------------
            })

            // 函数第二步:返回Promise对象
            return p

            // ------------函数体--------------
        }
    </script>
</body>

简易版 axios (模板)

为了方便日后使用简易版的 axios,现将它简化压缩成下面代码(用法不变)

    function simpleAxios(config) {
        return new Promise((resolve, reject) => {
            config.params && (config.url += `?${new URLSearchParams(config.params).toString()}`)
            const xhr = new XMLHttpRequest()
            xhr.open(config.method, config.url)
            xhr.addEventListener('loadend', () => {
                if (xhr.status >= 200 && xhr.status < 300) { resolve(JSON.parse(xhr.response)) }
                else { reject(new Error(xhr.response)) }
            })
            if (config.data) {
                xhr.setRequestHeader('Content-Type', 'application/json')
                xhr.send(JSON.stringify(config.data))
            } else { xhr.send() }
        })
    }

新方法实现异步

async 与 await

<body>
    <div>
        <div class="province"></div>
        <div class="city"></div>
        <div class="area"></div>
    </div>

    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script>
        // 1. 定义 async 修饰函数
        async function getData() {
            // 1.1. await 等待 Promise 对象成功的结果
            // await 必须用在 async 修饰的函数内(await会阻止"异步函数内"代码继续执行,原地等待结果)

            const pObj = await axios({ url: 'http://hmajax.itheima.net/api/province' })
            const province = pObj.data.list[0]

            const cObj = await axios({ url: 'http://hmajax.itheima.net/api/city', params: { pname: province } })
            const city = cObj.data.list[0]

            const aObj = await axios({ url: 'http://hmajax.itheima.net/api/area', params: { pname: province, cname: city } })
            const area = aObj.data.list[0]

            // 1.2 将数据渲染到页面上
            document.querySelector('.province').innerHTML = province
            document.querySelector('.city').innerHTML = city
            document.querySelector('.area').innerHTML = area
        }

        // 2. 调用函数
        getData()
    </script>
</body>

错误捕获

<body>
    <div>
        <div class="province"></div>
        <div class="city"></div>
        <div class="area"></div>
    </div>

    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script>
        async function getData() {
            try {
                const pObj = await axios({ url: 'http://hmajax.itheima.net/api/province' })
                const province = pObj.data.list[0]

                const cObj = await axios({ url: 'http://hmajax.itheima.net/api/city', params: { pname: province } })
                const city = cObj.data.list[0]

                const aObj = await axios({ url: 'http://hmajax.itheima.net/api/area', params: { pname: province, cname: city } })
                const area = aObj.data.list[0]

                document.querySelector('.province').innerHTML = province
                document.querySelector('.city').innerHTML = city
                document.querySelector('.area').innerHTML = area

            } catch (error) {
                console.dir(error)
            }
        }

        // 调用函数
        getData()
    </script>
</body>
生物分子仿真软件:AMBER_(17).AMBER在核酸研究中的应用 在使用AMBER进行核酸分子动力学模拟之前,需要对核酸系统进行详细的准备。这包括构建初始结构、添加溶剂分子、中和电荷等步骤。以下将详细介绍这些步骤。 阅读详情

相关推荐

四阶龙格库塔法求解一次常微分方程组(python实现)

之前在博客发布了关于使用四阶龙格库塔方法求解一次常微分方程组的文章,由于代码缺少具体的验证,部分朋友可能存在疑问,因此这里打算再重新写一篇博客来验证一下程序的正确性,另外,这里是使用python语言来实现的。

HelloWorldTM的博客 8542

struts1中的jQuery ajax

上个星期做了上传Excel的功能,本来想使用jQuery的

David_lou的专栏 3168

ArcGIS Pro中文帮助离线包安装指南:版本匹配与操作详解

本文详细指导如何为ArcGIS Pro安装中文帮助离线包,解决在线帮助访问不畅的问题。核心在于确保软件版本与离线包的精确匹配,并提供了从版本查看、离线包获取、安装步骤到软件内配置的完整操作流程。文中重点强调了版本匹配的重要性,并分享了高效使用本地帮助搜索及管理多版本帮助的实用技巧。

whisky的博客 989

ajax http1.1,Ajax与Http1.1

Http1.1要求每个客户端只能维护与服务器间的两个长连接,这两个长连接一般用于网页与图片等资源的并行加载;如果同时使用Ajax请求,则一定是新开的短连接。这就造成一种情况,当一个页面提交相当多的Ajax请求时,每一个都会使用短连接与服务器通讯。在通讯完成后,连接随即被关闭。如此,会浪费一定的时间在连接上。不过这并不是很大的问题,要知道这多次短连接是并发的存在,因此耗费在TCP连接上的时间并不是t...

weixin_30177835的博客 325

Comsol 弧形声学换能器声聚焦仿真

1. 弧度和曲率半径:弧形声学换能器的形状和曲率半径对声聚焦效果有重要影响。通常,较小的曲率半径和较大的弧度可以实现更强的声聚焦效果。弧形声学换能器声聚焦是指将声波能量集中在弧形声学换能器的特定区域内,以实现更强的声场强度和分辨率。4. 数值仿真和优化:使用声学仿真软件进行数值仿真可以帮助设计和优化弧形声学换能器的声聚焦效果。通过调整几何参数、材料特性和激励信号等参数,可以模拟和优化声聚焦效果。2. 激励信号:通过调整激励信号的频率和幅值,可以实现声波在弧形声学换能器中的聚焦效果。

声学黑洞仿真工作室 1616

代码实现 —— 基于 STM32 的可见光通信系统课程设计

基于STM32F103ZET6,源码如需移植,需要修改定时器捕获通道引脚,及定时器,如果你也有这个课设任务,希望对你有所帮助。

不善挽留 1万+

ajax readystate为1,Ajax readyState总是等于1

您好我正在使用提交给C ++ cgi程序的ajax。我遇到的问题是readyState总是1.我不知道我做错了什么。var asyncRequest; // XMLHttpRequest objecttry{asyncRequest = new XMLHttpRequest();// Register event handlerasyncRequest.onreadystatechange = S...

weixin_31596631的博客 371

记一次完整的RPG Maker MV游戏逆向过程(思路一)

了解RPG Maker MV的文件建构 上一篇文章,我们已经成功在PC上运行了游戏,那我们如何对游戏进行逆向呢? 首先要了解正常的RPG Maker MV制作的游戏应该具有哪些文件,以及他的结构 那如何了解他的结构呢,很简单,我们只需要用RPG Maker MV创建一个默认工程,来看看一个游戏的最简结构是怎么样的 创建新项目 项目创建完成 查看项目目录结构 是不是和之前解包出来的很像呢? 通...

Ciiiiiing的博客 1万+

php 对ajax的支持,ThinkPHP3.1新特性之对Ajax的支持更加完善

ThinkPHP3.1版对AJAX的支持更加完善了,具体表现在:1.判断AJAX方式改进现在可以直接使用常量IS_AJAX来判断是否AJAX方式请求,用来取代之前的Action类的isAjax方法,优势是可以在任何代码里面进行判断。而Action类的error和success方法内置就支持对AJAX自动判断支持。2.ajaxReturn方法完善原来的ajaxReturn方法只能返回固定结构的数据,...

weixin_35486456的博客 170

DAP-Link DIY复刻指南

DAP-Link是ARM开源的一个项目,主要用于代码下载以及调试,支持SWD和JTAG调试接口,对于开发嵌入式的同学相信都或多或少有所耳闻。除了DAP-Link之外还有很多同类型的调试器,如ST-LinkJ-Link,但是这些都是不开源的,无法复刻或进行二次开发。但DAP-Link不同,完全开源,不用担心侵权问题,且随着开源社区大家的共同努力,DAP-Link经过了不断的迭代,先如今已取代ARM之前推出的CMSIS-DAP开源项目。

爱出名的狗腿子 1万+

无人驾驶Autoware导读

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对无人驾驶Autoware介绍做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。

qq_35635374的博客 2397

struts1集合jquery ajax调用

//JS代码 var xmlhttp; function getYcl(){ var ckName=document.getElementById("ckName").value; try{ //IE 5.0 xmlhttp = new ActiveXObject('Msxm12.XMLHTTP');

Fiona的专栏 1788

大数据合规工程师必备的7项核心技能

当我们谈论“大数据”时,往往先想到它的价值——驱动业务增长、优化用户体验、赋能智能决策。大数据的价值越大,其合规风险的“重量”就越重。2023年,全球有超过120个国家出台了数据保护法规,中国《个人信息保护法》《数据安全法》的实施进入深水区,欧盟GDPR的罚款金额屡创新高(最高达全球营收的4%)。企业面临的合规压力,早已从“被动应对监管”升级为“主动构建合规能力”。在这样的背景下,大数据合规工程师。

SuperAGI2025 1259

ajax的state,ajax 中readystate一直为1

初学ajax,不明白为什么我在浏览器调试的过程中readystate一直没有变化过,一直都是1.这里是前端代码:function getMoreContent(){var xmlHttp;var content=document.getElementById("keyword");if(content.value==""){return;}xmlHttp=createXMLHttp();var u...

weixin_35679869的博客 480

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

jquery 1.10 ajax,jQuery UI 1.10.1 on the Microsoft Ajax CDN

jQuery UI 1.10.1 on the Microsoft Ajax CDN07/22/20142 minutes to readIn this articleThe jQuery UI 1.10.1 library includes the following files:ThemesAll of the standard jQuery UI themes are hosted on t...

weixin_42309866的博客 245

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

tp5.1的Ajax error

tp5.1的使用datatable时Ajax error表示ajax出现问题,检查一下ajax的参数,参考http://datatables.net/tn/7,注意url的格式为模块/控制器类名/方法

weixin_44423938的博客 357

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

ajax data.state,ajax 中readystate一直为1

初学ajax,不明白为什么我在浏览器调试的过程中readystate一直没有变化过,一直都是1.这里是前端代码:function getMoreContent(){var xmlHttp;var content=document.getElementById("keyword");if(content.value==""){return;}xmlHttp=createXMLHttp();var u...

weixin_36344678的博客 318

Ajax1.0 使用心得

前段时间, 刚使用Ajax1.0, 总结一下:1. 一个页面只能有一个 有一个2. 页面中不能有命名为 action的标签 我就是这样一个标签搞了我好长时间, 如果有这个标签, 所有页面都回传.3. FF下面.Post的标签必须是 Server 控件, 不可以用脚本控制提交. 否则页面全部回传.4. 各种标签的命名一定要符合规范,否则会带来很多问题.

zhang024'Blog 603

django 中ajax,在Django中使用Ajax(1.10)

我无法通过django(1.10)发送表单而无需刷新页面。我已经搜索了Stackoverflow上的其他相关问题,但没有成功。在Django中使用Ajax(1.10)这是我的AJAX请求:$(document).on('submit', 'signup-form', function(e){e.preventDefault();$.ajax({type: 'POST',url: '{% url "...

weixin_35949264的博客 282

thinkPHP5.1+jQuery+ajax实现搜索,用append展示ajax返回数据的完整实现

&lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt;     &lt;meta charset="UTF-8"&gt;     &lt;title&gt;兑换码&lt;/title&gt;     &lt;script src="../jQuery/jquery-3.3.1.min.

denghaolin的博客 1213

ajax在thinkphp5.1中的实用小实例

程序用到前台点击同时后台无刷查询并返回查看该用户是否激活该支付方式 前端js代码 <script> var wechat = 0;//定义一个变量记录点击次数 function weixin() { wechat++;//每点击一次 变量自加一 var formData = $("#weixin1").serialize(); //获取一个点击type的变量 支付宝 ...

qq_43521700的博客 338

【1+X Web前端等级考证】浅谈前端AJAX基础知识 (中级必考)

好久没更1+X了,2021-6月将进行2021上半年的1+X web前端认证考试,基础不过关的刷起来,无论是web前端初级、中级还是高级,主要考的是基础知识,考前自己磨磨基础。 官方信息网站 ???? 1+X Web考证信息成绩查询系统 ???? 工信部: 关于首批1+X证书制度试点院校名单的公告 ???? 1+X Web 前端开发职业技能等级标准.pdf 1+X 系列导航 考点知识回顾: 一、 1+X Web前端中级必考 | PHP 技术与应用 二、 1+X Web前端等级考证 | 详解jQuery基

go 3412

ThinkPHP5.1 Ajax跨域问题

之前在做三端分离的时候,做CMS遇到了AJAX跨域问题,现在将记录一下thinkphp5.1的解决方法。 thinkphp具体版本为5.1.36 首先在命令行切换到项目文件夹里,输入以下命令生成一个名称为CORS的中间件。 php think make:middleware CORS 生成的中间件位于app\http的文件夹下 打开CORS.php文件,键入以下代...

九城科技 博客:https://blog.minkse.cn/ 1718

JQuery-1.4 中的Ajax问题

心血来潮下了最新版本的JQuery1.4,写一个页面通过Ajax加载的的例子。用$.ajax()时我设置了超时时间为3秒: $.ajax({ url: "ajaxTable1.aspx", cache: false, error: function(XMLHttpRequest, textStatus, errorThr...

weixin_30740581的博客 81

jquery-1.9.1 ajax,jQuery UI 1.9.1 on the Microsoft Ajax CDN

jQuery UI 1.9.1 on the Microsoft Ajax CDN07/22/20142 minutes to readIn this articleThe jQuery UI 1.9.1 library includes the following files:ThemesAll of the standard jQuery UI themes are hosted on thi...

weixin_28718769的博客 192

ajax=1,ajax专栏1

一、什么是ajax?有什么作用?ajax中文翻译为:异步的js和xml。用于网页向服务器发送请求(可支持同步和异步2种方式),接收服务器响应后的处理数据。注:同步,网页发送请求后,锁定当前网页(不能继续操作);异步,网页发送请求后,可以继续操作网页发送请求。二、如何获得ajax对象?ajax获取ajax对象functiongetXhr(){varxhr;xhr=window.XMLHtt...

weixin_35741812的博客 235
上一篇: advPython-6
下一篇: Node.js-1
code_stream
博客等级 码龄4年 1238粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值