JavaScript 阿贾克斯

2023-05-16

Ajax技术的核心是XMLHttpRequest对象 用于在后台与服务器交换数据
ajax 异步请求 主要用来请求数据
远程地址或者本地地址
传统的web交互是用户触发一个http请求服务器 然后服务器收到之后 做出响应到用户 哪怕是一个很小的交互 都会返回一个完整的HTML页面 而且用户每次都要浪费时间和带宽去重新读取整个页面
ajax是一种用于创建快速动态网页的技术 通过在后天与服务器进行少量数据交换 使页面实现异步更新 这意味着可以在不重新加载整个页面的情况下 对网页的某部分进行更新
同步请求 是等待请求完成之后执行后续代码
异步请求 代码和请求同时执行
1、XMLHttpRequest API(应用程序编程接口)
①abort()停止请求
②getAllResponseHeader()把http请求的所有相应首部作为键值返回
③open(“menthod”,“URL”,[asyncFlag],[“username”],[“password”])建立对服务器的调用 method的参数可以是get(读数据)/post(写数据)/put URL本地/远程路径 其它可选参数 是否异步(T/F) 用户名 密码
④send()向服务器发送请求 参数不写是请求数据 写参数是传输数据
⑤setRequestHeader()
2、如何使用ajax
①实例化对象 var http = new XMLHttpRequest();
②和服务器建立联系 http.open("get")
③发送请求 http.send();
④获取服务器响应的数据 http.onreadstatechange()=function (){};读状态码
⑤读取数据

var http=new XMLHttpRequest();
http.open("get","./list/data.txt");
http.send();
http.onreadystatrchange=function (){
 /*   console.log(http.readyState);  输出2 3 4 在console为4的时候状态码为200*/
    if(http.readyState==4&&http.status==200){
        console.log(http.response);//将会读到txt里面的json数据
        var data=JSON.parse(http.response);//把数据转换为JavaScript对象
        console.log(data);
    }    
}

在本地创建一个txt文档 写一个小的json数据

[
    {
        "name":"小花";
        "sex":"男";
    },
    {    
        "name":"小草";
        "sex":"男";
    }
]

3、异步

var data=null;
var http=new XMLHttpRequest();
http.open("get","./list/data.txt",true);
http.send();
function showdata(callback){
    http.onreadystatechange=function(){
        if(http.readyState==4&&http.status==200){
            callback(http.response);
        }
    }
}
showdata(function (data){
    console.log(data);//在外部获取异步的数据
})

4、同步 JS单线程 同步会报错

var data=null;
varhttp=new XMLHttpRequest();
http.open("get","./list/data,txt",false);
http.send();
http.onreadystatechange=function(){
    if(http.readyState==4&&http.status==200){
        console.log(1);//报错
    }
}
console.log(2);//输出2

5、ajax封装

function method(res,url,data,callback){
    var http=new XMLHttpRequest();
    if(res=="get"){
    //get方式传值是在路径之后拼接数据
        if(data){
            url+="?";
            url+=data;
        }
        http.open(res,url);
        http.send();
    }else{
        http.open(res,url);
        if(data){
            http.send(data);//post在send上发送数据
        }else{
            http.send();
        }
    }
    http.onreadystatechange=function(){
        if(http.readyState==4&&http.states==200){
            callback(http.response);
        }
    }
}
method("get","./list/data.txt",null,function(data){
    console.log(data);
})

6、跨域
协议 主机名 端口 不同在访问数据时就会出现跨域
http(协议)?/stroe.company.com(主机名)/dir2/other.html
①jsonp跨域 也就是src跨域
通过传递回调函数来返回数据
我们打开Apache MySQL环境 创建一个数据表 用PHP连接数据库返回数据
localhost:8080/data.php即可查看PHP返回的数据库数据

var http=new XMLHttpReaquest();
http.open("post","http://localhost:8080/data.php");
http.send();
http.onreadystatechange=function(){
    if(http.readyState==4&&http.status==200){
    console.log(JSON.parse(http.response));
    }
}
//跨域报错

jsonp跨域
在PHP文件中

$callback =$_GET['callback'];
$data=array(...);
echo $callback.'('.json_encode($data).')';
<script src="http://localhost:8080/data.php?callback=dosome"></script>
<script>
function dosome(data){
    console.log(data);
}
</script>

②CROS跨域 跨域资源共享
配置PHP后台允许跨域<?php header('Access-Control-Allow-Origin:*');*允许所有域名访问
mysql乱码 set names ‘gbk’;
把请求代码写好

var http=new XMLHttpRequest();
http.open("post","http://localhost:8080/data.php");
http.send();
http.onreadystatechange=function(){
    if(http.readyState==4&&http.status==200){
        console.log(http.response);
    }
}

7、调用百度的搜索接口代码

<div><input id="sear" type="text"/></div>
<ul class="menu">
</ul>
<script>
var sear=document.querySelector("#sear");
sear.onkeyup=funciton(){
    //生成一个script标签
    var script=document.createElement("script");
    script.src="https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/?wd="+this.value+"&cb=showdata";
    document.body.appendChild(script);
}
function showdata(data){
    //console.log(data);
    for(var i=0;i<data.s.length;i++){
        var li="<li><a href='https://ww.baidu.com/s?wd="+data.s[i]"'></a></li>";
        menu.innerHTM+=li;
    }
}
</script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript 阿贾克斯 的相关文章

  • 从 HTML 字符串中解析和选择

    使用 ajax 调用 我返回了页面的partialView HTML 但在显示它之前 我希望从主 div 中提取信息 如果我创建一个浮动窗口 该数据只是大小信息 Code div class window details more data
  • JavaScript 字符串中的脚本标签[重复]

    这个问题在这里已经有答案了 我遇到一个问题 即 JavaScript 中带引号的字符串内有结束脚本标记 并且它正在杀死脚本 我认为这不是预期的行为 可以在这里看到这样的示例 http jsbin com oqepe edit http js
  • Javascript 将对象推送为克隆

    我将 d3 用于交互式网络应用程序 我需要绑定的数据在交互过程中发生变化 并且由 JSON 变量中的一些选定对象组成 为此 我在 JSON 变量上使用了映射 并进行了一些查询来选择适当的对象 对象被推送到列表中 并且该列表被绑定为新数据 我
  • 以下文档我无法创建 Vue.js 3 的实例

    The code https stackblitz com edit vue ttt file src main js https stackblitz com edit vue ttt file src main js 问题 我正在尝试在
  • 将时间戳转换为一个数组

    在应用程序脚本 谷歌表中运行 我从 API 获取时间戳并返回此结果 1 6370611672429312E18 1 63706107263277082E18 我执行此代码并且工作正常 但问题不在数组中 我每次都需要它在数组中 const t
  • Angular UI 路由器嵌套视图问题

    我在理解 Angular UI Router 嵌套视图的工作原理时遇到了一些问题 我的 stateProvider 看起来像这样 stateProvider state login url login views main template
  • 使用javascript以编程方式触发iOS safari中的复制菜单?

    我正在尝试实现一种用户友好的方式 将一些文本从文本输入字段复制到 iOS Safari 上的剪贴板 我知道无法在这个平台上以编程方式完成此操作 但我希望能够尽可能地指导用户体验 在 iOS Safari 上 当用户手动突出显示某些文本时 会
  • 使用 float:left 与 display:inline-block 的 jQuery UI 拖放排序比较

    我这里有两个例子 这两个例子之间的唯一区别是 一种使用display inline block 另一种使用float left li doc item 显示 内联块 与 li doc item float left 我的问题是 displa
  • Angular 4 Http POST 不起作用

    我希望每个人都做得很好 我最近开始使用 Angular 4 4 我一直在尝试将数据发布到我的 api 服务器 但不幸的是它不起作用 我花了大约两天的时间 但仍然没有成功 甚至已经尝试过 6 7 篇文章角 io https angular i
  • Angular2:动态同步http请求

    Goal 发出一系列同步 http 请求并能够将它们作为一个可观察流进行订阅 示例 不工作 let query arr test1 test2 test3 function make request query arr if query a
  • Angular JS - 使服务可以从控制器和视图全局访问

    假设我们有以下服务 myApp factory FooService function 然后 从控制器中 我会说 myApp controller FooCtrl scope FooService function scope FooSer
  • Svelte 条件元素类报告为语法错误

    我正在做一个if块每if 块的精简指南 https svelte technology guide if blocks 这看起来很简单 但 Svelte 认为这是一个语法错误 svelte plugin ParseError Unexpec
  • 如何从 CSS 选择器中提取类名?

    故事 我目前正在构建一个 ESLint 规则 以警告在 CSS 选择器定位器中使用引导布局导向和角度技术类 目前我在字符串方法中使用简单的子字符串 for var i 0 i lt prohibitedClasses length i if
  • 轮播滑动(未滑动)事件上的火灾事件,Bootstrap 3

    Bootstrap 2 似乎可以很好地处理幻灯片事件 请参阅这个问题 https stackoverflow com questions 9651466 how to attach slide slid events to the boot
  • Firebase + Node.js:错误:找不到 XMLHttpRequest 兼容性库

    Firebase Node js On iOS 安装的 Node js npm 安装 firebase save 节点测试 js 其中 test js 是一个非常简单的连接到 Firebase 的脚本 var firebase requir
  • 如何将MathJax公式转换为img

    Mathjax 现在在我的项目中运行良好 但有一个问题 有没有办法将MathJax的公式 纯html和css 转换成img文件 我可以保存 MathJax 可以配置为生成 SVG 看http docs mathjax org en late
  • jQuery Mobile + Admob:轮换?

    我使用 jQuery Mobile 框架创建了一个移动应用程序 所有页面都在index php中加载 使用 div 在每个页面的页脚中 我添加了Admob代码 div div div
  • Vue - 调度完成后调用 store getter?

    我正在使用 Laravel 5 7 Vue2 Vuex 我在调度调用完成后让 Vue 返回存储值时遇到一些困难 我的申请流程如下 我单击一个提交按钮 该按钮调用组件上的 validate Validate 分派到我的 addLease 操作
  • 将 html 文本框的值分配给 div 的标题

    line 1
  • 如果 POST 响应仅包含 ID,如何将数据保存到我的 Ember 存储?

    Ember 数据期望我的服务器在每次成功后返回完整的对象POST 但是 我的 API 只返回一种元对象 其中包含id 当 Ember 收到此对象时 记录中的现有数据将被删除 除了id 例如 当我这样做时 var asset App Asse

随机推荐

  • Paddle-Lite终端部署深度学习模型流程

    Paddle Lite是飞桨基于Paddle Mobile全新升级推出的端侧推理引擎 xff0c 在多硬件 多平台以及硬件混合调度的支持上更加完备 xff0c 为包括手机在内的端侧场景的AI应用提供高效轻量的推理能力 xff0c 有效解决手
  • nohup: failed to run command `java': No such file or directory

    问题描述 xff1a 平台研发项目 xff0c ActiveQM做消息队列 xff0c zookeeper做集群 xff0c zkui做可视化服务管理 xff0c skynet是引擎服务 xff0c skynet下面有一个xmanager是
  • 【原理篇】一文读懂Faster RCNN

    0 Faster RCNN概述 论文地址 xff1a https arxiv org pdf 1506 01497 pdf Faster R CNN源自2016年发表在cs CV上的论文 Faster R CNN Towards Real
  • 【原理篇】一文读懂Mask RCNN

    Mask RCNN 何凯明大神的经典论文之一 xff0c 是一个实例分割算法 xff0c 正如文中所说 xff0c Mask RCNN是一个简单 灵活 通用的框架 xff0c 该框架主要作用是实例分割 xff0c 目标检测 xff0c 以及
  • 【原理篇】一文读懂FPN(Feature Pyramid Networks)

    论文 xff1a feature pyramid networks for object detection 论文链接 xff1a https arxiv org abs 1612 03144 这篇论文是CVPR2017年的文章 xff0c
  • pytorch用voc分割数据集训练FCN

    语义分割是对图像中的每一个像素进行分类 xff0c 从而完成图像分割的过程 分割主要用于医学图像领域和无人驾驶领域 和其他算法一样 xff0c 图像分割发展过程也经历了传统算法到深度学习算法的转变 xff0c 传统的分割算法包括阈值分割 分
  • 【学习笔记】语义分割综述

    语义分割就是图像分割 xff0c 是图像像素级的分类 xff0c 即给图像的每一个像素点分类 与之临近的一个概念叫实例分割 xff0c 实例分割就是语义分割 43 目标检测 语义分割只能分割出所有同类的像素 xff0c 目标检测把不同的个体
  • pytorch用自己数据集训练Unet

    在图像分割这个问题上 xff0c 主要有两个流派 xff1a Encoder Decoder和Dialated Conv 本文介绍的是编解码网络中最为经典的U Net 随着骨干网路的进化 xff0c 很多相应衍生出来的网络大多都是对于Une
  • 【史上最全】重装ubuntu20.04系统基本环境配置

    最近新买电脑重装ubuntu玩深度学习 xff0c 踩了两天坑总结处下列流程 一 重装系统 xff08 U盘方式 xff09 ubuntu20 04镜像文件下载地址 Ubuntu 20 04 4 Desktop 64 bit 在ubuntu
  • PaddleDetection2.x训练、部署自己的模型

    PaddleDetection是百度Paddle家族的一个目标检测开发套件 个人感觉Paddle的优点是模型比较丰富 xff0c 支持的部署方式较多 xff08 python C 43 43 移动端等 xff09 xff0c 缺点是坑比较多
  • TensorRT(C++)部署 Pytorch模型

    众所周知 xff0c python训练pytorch模型得到 pt模型 但在实际项目应用中 xff0c 特别是嵌入式端部署时 xff0c 受限于语言 硬件算力等因素 xff0c 往往需要优化部署 xff0c 而tensorRT是最常用的一种
  • 安卓端使用ncnn部署yolov5(v6.0)

    ncnn是腾讯公司开源的一个专为手机端极致优化的高性能神经网络前向计算框架 ncnn从设计之初 xff0c 就深刻考虑手机端的部署和使用 xff0c 无需第三方依赖 xff0c 跨平台 xff0c 手机端cpu的速度快于目前所有已知的开源框
  • 软件工程本科毕业设计题目推荐?软件工程毕设题目大全

    软件工程本科毕业设计题目推荐 xff1f 这个的话首先你对那些方面比较熟悉 xff0c 毕竟软件工程范围还是比较广的 xff0c 所以这个你得要自己确定好方向 xff0c 这个很重要 首先软件工程专业可以做网站 xff0c 系统 xff0c
  • 人工智能论文猜想

    一 前言 人类是不是机器人 随着时代的进步 xff0c 人工智能诞生了 又随着人工智能的进步 xff0c ChatGPT诞生了 xff0c 这不仅让我想出一个问题 xff1a 我们人类是不是机器人 xff1f ChatGPT xff0c 发
  • 机器学习线性分类

    数学模型 分类的目标是把输入 x 匹配到唯一的离散型类别 Ck 中 在一个平面中 xff0c 我们可以用一条直线分开两组数据 xff0c 所以这条直线 xff0c 一般来讲是在D维输入空间中的 xff08 D 1 xff09 维超平面 xf
  • marlin2.0 的使用过程记录。skr v1.3

    硬件 tb购入 xff0c 主控是LPC1768 xff0c 32位的 软件 软件下载地址 https github com bigtreetech BIGTREETECH SKR V1 3 这个git库是skr板子的商家维护的 xff0c
  • Codeforces Round #774 (Div. 2)(A-C)

    Problem A Codeforces 签到题 xff0c 判断s里面最多能够有多少个 AC代码 pragma GCC optimize 2 pragma GCC optimize 3 pragma GCC optimize 34 Ofa
  • 【AtCoder】 AtCoder Beginner Contest 103 (ABC103)

    先上一张最终结果的图吧 xff1a 感觉AtCoder的ABC还是比较练手的 xff0c 考验代码速度 xff0c 网速 xff0c D题还会有一些思维难度 这次ABC由于网络原因 xff0c 很迟才看到题 xff0c 但完成得还是不错的
  • java将16进制与10进制互相转换

    今天遇到了进制转换的有趣问题 xff0c 记录下来 1 xff0c 首先 xff0c 10进制转16进制 xff0c 大家应该都比较熟 xff1a Integer span class hljs built in x span 61 spa
  • JavaScript 阿贾克斯

    Ajax技术的核心是XMLHttpRequest对象 用于在后台与服务器交换数据 ajax 异步请求 主要用来请求数据 远程地址或者本地地址 传统的web交互是用户触发一个http请求服务器 然后服务器收到之后 做出响应到用户 哪怕是一个很