JS原生Ajax操作(XMLHttpRequest)

GET请求

 var xmld=new XMLHttpRequest();
xmld.open("GET","wan.php"+"?dd1=dong11&dd2=dong22"); //打开页面
xmld.setRequestHeader("dh","donghhhh");//设置请求头
xmld.send(null); //发送数据需要手动在url添加
xmld.onreadystatechange=function(){
if(xmld.readyState == 4){
//获取返回数据
alert(xmld.getResponseHeader("Server"));//获取响应头
alert(xmld.status+"--"+xmld.statusText);//得到如200:ok、404:Not Found 等等
alert(xmld.responseText); //得到字符串
//var xx=xmld.responseXML //得到HTML对象
}
};

POST请求

 var xmld=new XMLHttpRequest();
xmld.open("POST","wan.php"); //打开页面
xmld.setRequestHeader("Content-Type","application/x-www-form-urlencoded");//设置请求头
xmld.send("dd1=dong11&dd2=dfikij"); //发送数据
xmld.onreadystatechange=function(){
if(xmld.readyState == 4){
//获取返回数据
alert(xmld.getResponseHeader("Server"));//获取响应头
alert(xmld.status+"--"+xmld.statusText);//得到如200:ok、404:Not Found 等等
alert(xmld.responseText); //得到字符串
//var xx=xmld.responseXML //得到HTML对象
}
};

兼容性问题

if(XMLHttpRequest){
//系列操作
}else{
alert("浏览器不支持");
}

利用iframe模拟ajax

实现表单提交的返回结果在iframe中进行显示,实现主页面不刷新效果,也可以模拟上传文件,推荐使用,兼容性最好

 <iframe id="ifd" name="dongff"></iframe>
<form action="wan.php" method="post" target="dongff">
<input type="text" name="dd1">
<input type="text" name="dd2">
<input type="submit" onClick="subd()">
</form>
//获取返回内容
<script src="jquery-3.3.1.min.js"></script>
<script>
//在点击提交按钮时给iframe添加加载完毕事件
function subd(){
//等待iframe内容加载完毕时进入
$("#ifd").on('load',function(){
//得到iframe的内容
var ifdtext=$("#ifd").contents().find("body").text();
alert(ifdtext);
});
}
</script>

基于jquery的ajax

Get请求,参数(URL,数据,回调函数)

$.get("wan.php",{namex:"myname",passwd:"123"},function(datax){
$("p").text(datax);//datax为返回的数据
});

Post请求,参数与get一致

$.post("wan.php",{namex:"myname",passwd:"123"},function(datax){
$("p").text(datax);//datax为返回的数据
});

加载HTML碎片,返回结果会覆盖掉id为div1id标签的内容

$("#div1id").load("uu.html",function(a,b,c){
if(b=="error"){
$("#div1id").text("加载失败");
}
});

结合版:

 $.ajax({
url:"wan.php",
type:"POST",
//headers:{"dongh":"dongssssss"}, //设置请求头,涉及跨域时不要进行设置
data:{"xx":123456,"user":"dddd"},
success:function (data) {
alert(data);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
// 状态码
alert(XMLHttpRequest.status);
// 状态
alert(XMLHttpRequest.readyState);
// 错误信息
alert(textStatus);
} });

Ajax的跨域请求

如果在浏览器控制台看到类似如下的错误,表示存在跨域请求数据,即两个网页不是在同一个服务器上

Access to XMLHttpRequest at 'http://193.112.87.66/add.php?namex=myname&passwd=123' from origin 'http://192.168.43.21:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

解决方法如下,在访问的页面中添加响应头内容

 <?php
// 指定允许其他域名访问
header('Access-Control-Allow-Origin:*');
// 响应类型
header('Access-Control-Allow-Methods:POST');
// 响应头设置
header('Access-Control-Allow-Headers:x-requested-with,content-type');

异步文件上传

自定义文件上传按钮(点击试试效果):

东文件

利用页内标签定位浮动,实现等大的input标签浮于div标签之上,并将自身透明度设置为零,span的标签为显示的文字

 <div style="height: 50px;width: 80px;background-color:aqua;text-align: center;line-height: 50px;position: relative">
<span>东文件</span>
<input type="file" id="infileid" style="height: 50px;width: 80px;position: absolute;opacity: 0; bottom: 0px;left: 0px;top: 0px;right: 0px">
</div>

原生ajax文件上传

 function subd(){

     var fileobjx=document.getElementById("infileid").files[0];//得到文件对象
//创建form表单对象
var formobjx=new FormData();
formobjx.append("namexx","dong111");
formobjx.append("dongfile",fileobjx); var xmld=new XMLHttpRequest();
xmld.open("POST","wan.php"); //打开页面
xmld.send(formobjx); //发送form数据
xmld.onreadystatechange=function(){
if(xmld.readyState == 4){
alert(xmld.responseText); //得到字符串
}
};

Jquery的ajax文件上传

 function subd(){
var fileobjx=document.getElementById("infileid").files[0];//得到文件对象
//创建form表单对象
var formobjx=new FormData();
formobjx.append("namexx","dong111");
formobjx.append("dongfile",fileobjx);
$.ajax({
url:"wan.php",
type:"POST",
data:formobjx,
processData: false,
contentType: false,
success:function (data) {
alert(data);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
// 错误信息
alert(textStatus);
} }); };

网页的异步请求(Ajax)的更多相关文章

  1. [js开源组件开发]network异步请求ajax的扩展

    network异步请求ajax的扩展 在日常的应用中,你可能直接调用$.ajax是会有些问题的,比如说用户的重复点击,比如说我只希望它成功提交一次后就不能再提交,比如说我希望有个正在提交的loadin ...

  2. 异步请求Ajax(取得json数据)

    异步请求Ajax 没有学习Ajax之前请求数据的时候都是整个页面全部刷新了一次,也就是每次请求都会重新请求所有的资源.但是在很多时候不需要页面全部刷新,仅仅是需要页面的局部数据刷新即可,此时需要发送异 ...

  3. 异步请求Ajax

    AJAX:Asynchronous JS And XML,包括HTML.CSS.JS.DOM.XML.JSON等,客户端技术范畴.主要目标:发起异步请求/响应,实现页面内容的局部刷新,提高浏览体验:实 ...

  4. JavaScrpit中异步请求Ajax实现

    在前端页面开发的过程中,经常使用到Ajax请求,异步提交表单数据,或者异步刷新页面. 一般来说,使用Jquery中的$.ajax,$.post,$.getJSON,非常方便,但是有的时候,我们只因为需 ...

  5. 关于异步请求AJAX的具体解释

    1,异步请求的方法步骤: 1,推断当前用户支持的浏览器类型 XMLHttpRequest:推断是否支持非IE浏览器,相应的创建方法:xmlhttp = new XMLHttpRequest(); wi ...

  6. [异步请求]ajax、axios、fetch之间的详细区别以及优缺点

    1.jQuery ajax  $.ajax({ type: 'POST', url: url, data: data, dataType: dataType, success: function () ...

  7. jQuery异步请求ajax()之complete参数详解

    请求完成后回调函数 (请求success 和 error之后均调用).这个回调函数得到2个参数:XMLHTTPRequest) 对象和一个描述请求状态的字符串("success", ...

  8. 异步请求 ajax的使用详解

    https://blog.csdn.net/happyaliceyu/article/details/52381446 可以说是很详细了,赞

  9. 黑马学习AJAX jQuery发送异步请求 $.ajax() $.post() $.get()是在调用方法而不是定义方法

随机推荐

  1. Asp.net Zero 应用实战-最初部署问题

    此时用的是aspnet-zero-core-4.3.0 1.前两天vs2017刚刚最新升级了,打开后就报错,然后就根据提示把每个项目文件中添加了 <PropertyGroup> <E ...

  2. Android中 实现队列方式处理优先级信息

    需求:当界面在处理消息A时,突然接收到消息B,需要立马显示B的信息,然后再继续显示消息A,或者接收到消息C,再显示完消息A后再显示消息C: 原理很简单 在一个轮询中,查询消息列表中的元素,先处理优先级 ...

  3. 2018年最新搜索引擎转跳JavaScript代码(竞价广告专用)

    JavaScript代码如下,请放在script标签内: eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.r ...

  4. FeatureTools

    featuretools一种自动特征工程的工具.可快速生成较多类型的特征,取得不错的效果. 1.输入:把原始数据转换成featuretools的输入 2. 可以适当调整特征个数,防止训练的模型过拟合 ...

  5. 洛谷[LnOI2019]长脖子鹿省选模拟赛 简要题解

    传送门 听说比赛的时候T4T4T4标程锅了??? WTF换我时间我要写T3啊 于是在T4T4T4调半天无果的情况下260pts260pts260pts收场真的是tcltcltcl. T1 快速多项式变 ...

  6. 在java中,事务是什么?

    一.什么是Java事务通常的观念认为,事务仅与数据库相关.事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性(isolat ...

  7. (27)How to stay calm when you know you'll be stressed

    https://www.ted.com/talks/daniel_levitin_how_to_stay_calm_when_you_know_you_ll_be_stressed00:12A few ...

  8. python 方法

    1.首先运行python交互模式 输入 python 2.定义一个有序的集合 相当于js中的数组它里面有一些增删改查的方法 1. 定义一个数组 >>> ww = ['1','2',' ...

  9. Python 虚拟环境 pyenv、venv(pyvenv)、virtualenv之间的区别

    请参考连接 https://blog.zengrong.net/post/2167.html https://blog.csdn.net/lanonjj/article/details/5105021 ...

  10. 汇总java生态圈常用技术框架、开源中间件,系统架构及经典案例等

    转自:http://www.51testing.com/html/83/n-3718883.html 有人认为编程是一门技术活,要有一定的天赋,非天资聪慧者不能及也.非也,这是近几年,对于技术这碗饭有 ...