AJAX
AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。<br>AJAX 不是新的编程语言,而是一种使用现有标准的新方法。<br>AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下。<br>
XMLHttpRequest 对象
所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)。<br>XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。<br>XMLHttpRequest 对象用于和服务器交换数据。<br>
向服务器发送请求
如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:<br>xmlhttp.open("GET","test1.txt",true);<br>xmlhttp.send();<br>方法与描述<br><br>open(method,url,async) <br>规定请求的类型、URL 以及是否异步处理请求。<br>• method:请求的类型;GET 或 POST<br>• url:文件在服务器上的位置<br>• async:true(异步)或 false(同步)<br><br>send(string) <br>将请求发送到服务器。<br>• string:仅用于 POST 请求<br>
服务器响应
如需获得来自服务器的响应,请使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。<br>属性 描述<br>responseText 获得字符串形式的响应数据。<br>responseXML 获得 XML 形式的响应数据。<br>
onreadystatechange 事件
当请求被发送到服务器时,我们需要执行一些基于响应的任务。<br>每当 readyState 改变时,就会触发 onreadystatechange 事件。<br>readyState 属性存有 XMLHttpRequest 的状态信息。<br>下面是 XMLHttpRequest 对象的三个重要的属性:<br><br>属性与描述<br><br>onreadystatechange :<br>存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。<br>存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。<br><br>readyState :<br>• 0: 请求未初始化<br>• 1: 服务器连接已建立<br>• 2: 请求已接收<br>• 3: 请求处理中<br>• 4: 请求已完成,且响应已就绪<br><br>status :<br>200: "OK"<br>404: 未找到页面<br><br>在 onreadystatechange 事件中,我们规定当服务器响应已做好被处理的准备时所执行的任务。<br>当 readyState 等于 4 且状态为 200 时,表示响应已就绪:<br>
参考代码
<!DOCTYPE html><br><html><br><head lang="en"><br> <meta charset="UTF-8"><br> <title>ajax</title><br></head><br><body><br><br><button onclick="loadData()">load ajax</button><br><br><br><script><br> function loadData(){<br> //要通过ajax拿到数据,从网络上的某个接口来.<br> //1 .创建一个核心对象 XMLHttpRequest<br> let xhr = new XMLHttpRequest();<br> //2. 先open,设置请求方法,get ; url地址:远端接口请求; async是否异步<br> xhr.open("GET","https://api.apiopen.top/getSingleJoke?sid=28654780",true);<br> //再send<br> xhr.send();<br><br> //事件写来<br> xhr.onreadystatechange = function(){<br><br> //4 请求已完成,且响应已就绪<br> //200: "OK"<br> if(xhr.readyState == 4 && xhr.status == 200){<br><br> //拿到服务器响应的数据<br> let result = xhr.responseText;<br> console.log(result);<br><br> }<br> }<br><br><br> }<br></script><br></body><br></html><br>
服务端接口
1. 服务端接口提供一个请求地址,暴露出来给我们的客户端访问: ajax<br>2.在客户端使用ajax技术来发送请求给服务器.<br><br>注意:不是所有的接口都可以通过ajax直接调用的,有些接口有特定方法,例如baiduAI的java代码来调用.<br>
1. 别人写好的,放在网络上公开出来的<br>https://gitee.com/safflower_club/free_api_interface<br><br>2.可以自己写的.掌握后端接口的编码的技术: node,java,PHP,等等<br>
JSON
什么是JSON
•JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)<br> •JSON 是轻量级的文本数据交换格式<br> •JSON 独立于语言 *<br> •JSON 具有自我描述性,更易理解<br>* JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。<br>JSON 解析器和 JSON 库支持许多不同的编程语言。
JSON语法规则
JSON 语法是 JavaScript 对象表示法语法的子集。<br>• 数据在名称/值对中<br>• 数据由逗号分隔<br>• 花括号保存对象<br>• 方括号保存数组<br>https://www.bejson.com/<br>
JSON值
JSON 值可以是:<br>• 数字(整数或浮点数)<br>• 字符串(在双引号中)<br>• 逻辑值(true 或 false)<br>• 数组(在方括号中)<br>• 对象(在花括号中)<br>• null<br>
JSON文件
• JSON 文件的文件类型是 ".json"<br>• JSON 文本的 MIME 类型是 "application/json"<br>
把 JSON 文本转换为 JavaScript 对象
JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),<br>将 JSON 数据转换为 JavaScript 对象,然后在网页中使用该数据。<br>为了更简单地为您讲解,我们使用字符串作为输入进行演示(而不是文件)。<br>可以使用eval:<br>可以使用 : JSON.parse将字符串文本转化为js对象.<br>
函数(function)
//1 函数是一段代码,完成特定某个功能的块.可以被多次调用<br>//2 语法结构: function 固定的<br>// 函数名-> 自定义,动词,功能相关的 getmax,getsum,findById,sort<br>//() 固定,当然括号可以为空,可以写 -> "参数" ->函数执行的过程中,需要依赖外部数据,这些数据通过参数传递进来.<br>//函数执行的前提条件.<br>//定义函数 -》求两个数字中的最大值 参数前不要加 let var -》还不能确定参数的值,我们将这种定义函数参数 成为形式参数 ,简称形参<br>
函数的定义和调用
//无参数,无返回值<br>function fun01(){<br> console.log("fun01")<br>}<br>//1、直接在js中调用<br> 2、事件调用
//无参数,有返回值,必须要接受并处理<br>function fun02(){<br> return "string";<br>}<br>//1、直接在js中调用<br> 2、事件调用<br>
//实现特定功能: 计算两个数字的和<br> function getsum(a,b){ //有两个参数,分别为a和b,用逗号隔开<br> //在函数内部,将a和b当成已知条件<br> let sum = a+b;<br> console.log("sum :"+sum);<br> } <br>//1、直接在js中调用<br> 2、事件调用<br>
function getsum2(a,b){ //有两个参数,分别为a和b,用逗号隔开<br> //在函数内部,将a和b当成已知条件<br> let sum = a+b;<br> //return 后面的内容就是返回值<br> return sum;<br>}<br>//1、直接在js中调用<br> 2、事件调用<br>
有返回值.必须要接收并处理.<br><br>用的是最多的.<br>//return 后面的内容就是返回值<br>//1. 函数中只能return 一次<br>//2. 如果有多次return的代码 也只是去执行第一个而已<br>//3.其实 return 的功能是结束当前的函数<br><br>
jQuery
定义和用法
ajax() 方法通过 HTTP 请求加载远程数据。<br>该方法是 jQuery 底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。$.ajax() 返回其创建的 XMLHttpRequest 对象。<br>大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性。<br>最简单的情况下,$.ajax() 可以不带任何参数直接使用。<br>注意:所有的选项都可以通过 $.ajaxSetup() 函数来全局设置。<br>
语法<br>jQuery.ajax ( [settings] )<br>可选。用于配置 Ajax 请求的键值对集合。<br>可以通过 $.ajaxSetup() 设置任何选项的默认值<br>
url
类型:String<br>默认值: 当前页地址。发送请求的地址。<br>
type
类型:String<br>默认值: "GET")。请求方式 ("POST" 或 "GET"), 默认为 "GET"。<br>注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分浏览器支持。<br>
async
类型:Boolean<br>默认值: true。默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。<br>注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。<br>
dataType
类型:String<br>预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如 XML MIME 类型就被识别为 XML。在 1.4 中,JSON 就会生成一个 JavaScript 对象,而 script 则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值: <br>• "xml": 返回 XML 文档,可用 jQuery 处理。<br>• "html": 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。<br>• "script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 "cache" 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)<br>• "json": 返回 JSON 数据 。<br>• "jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。<br>• "text": 返回纯文本字符串<br>
success
类型:Function<br>请求成功后的回调函数。<br>参数:由服务器返回,并根据 dataType 参数进行处理后的数据;描述状态的字符串。<br>这是一个 Ajax 事件。<br>
参考代码
<!DOCTYPE html><br><html><br><head lang="en"><br> <meta charset="UTF-8"><br> <title></title><br> <!--1 百度cdn在线的jquery--><br> <script src="http://libs.baidu.com/jquery/2.0.0/jquery.js"></script><br></head><br><body><br><br><button onclick="funajax()">ajax</button><br><!--jquery,别人封装好的js,如果要使用外部js--><br><script><br> function funajax(){<br> $.ajax({<br> //Ajax 请求的键值对集合<br> url: "https://api.apiopen.top/getTencentNews",<br> type: "GET",<br> async: true,<br> dataType: "json",<br> success: function(res){<br> //res 从服务器返回的数据<br> console.log(res);<br><br> let array = res.data;<br> for(let i=0;i<array.length; i++){<br><br> console.log(array[i].title);<br> console.log(array[i].intro);<br> console.log("**********************");<br> }<br> }<br> })<br> }<br></script><br></body><br></html><br>