Ajax基础 跨域

本文详细介绍了Ajax的工作原理,包括使用XMLHttpRequest对象进行异步请求的过程,以及如何通过$.ajax()等方法在jQuery中实现Ajax。同时,探讨了跨域问题的解决方案,如CORS和JSONP,并提供了具体的代码示例。
摘要由CSDN通过智能技术生成

Ajax简介

从API获取后台数据,应用于局部刷新技术,异步请求。
异步请求:请求和后续代码同时执行
同步请求:等待请求执行完成在执行后续代码

Js-Ajax对象 XMLhttprequest对象 5步

  1. 实例化对象http
    var http=new XMLhttpRequest();
  2. 连接远程服务器
    http.open(method,url,true,user,password,callback);
    参数: method 请求的方式 ;get post url:请求的服务器路径;async 当前的请求是同步还是异步 true 异步 false 同步;user 用户名 password 密码
  3. 发送请求
    http.send();
  4. 响应事件
    onreadystatechange
  5. 渲染界面
    判断最终状态http.readystate==4
    状态码http.status 200 success 500 服务器报错 404 服务器端页面丢失
    返回string类型数据var strdata=http.response || http.responseText
    string类型数据转化成object类型数据var data=JSON.parse(strdata);
http.onreadystatechange=function(){
//5. 渲染界面
if (http.readyState == 4 && http.status == 200) { 
            //返回string数据
            var strdata=http.response || http.responseText;
            console.log(http.response);
            console.log(http.responseText);
            //string json转化成对象json JSON.parse()
            //对象json转化成string json JSON.stringify()
            var data = JSON.parse(strdata);
            console.log(data);
        }
}

HTTP: Status 200 – 服务器成功返回网页
HTTP: Status 404 – 请求的网页不存在
HTTP: Status 503 – 服务不可用

跨域

协议(http/https)域名 端口,有一个不同就会形成跨域

cros解决跨域

jsonp解决跨域(src跨域)

    function getdata(result) {console.log(result);}
</script>
<script src="http://localhost:8080/jsonp.php?index=1&cb=getdata"></script>

script使用src进行跨域 在接口上传入要执行的回调函数

Jquery-Ajax

ajax 请求

$.ajax()–jQuery 底层 AJAX 实现

$.ajax({
	method:"post/get",
	data:{},
	url:"",
	success:function(result){},
	error:function(err){},
	dataType:"jsonp",//jsonp跨域
	jsonpCallback:"jsonp-callback",//jsonp回调函数getData
	async:true,//异步同步请求,
	timeout:2000,
	contentType: "application/x-www-form-urlencoded",//默认设置发送内容编码
	headers: {//headers  是附加到请求上的额外的键值属性
     city: "test"
     }})
/* 	 dataType
"xml": 返回 XML 文档,可用 jQuery 处理。
     "html": 返回纯文本 HTML 信息;包含的script标签会在插入dom时执行。
     "script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了"cache"参数。'''注意:'''在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载)
     "json": 返回 JSON 数据 。
     "jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" ,jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
     "text": 返回纯文本字符串
     */

$.get, $.post --jQuery 高层AJAX 实现

$.get(url,[data],[fn],[datatype])//datatype="jsonp"在前面添加callback
$.getJSON(url,[data],[fn])//datatype 默认json
$.getScript(url,[callback])
$.post(url,[data],[fn],[datatype])//datatype="jsonp"在前面添加callback

jsonp跨域 举例

function getData(res) {console.log(res);}
$.get("https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=火车&cb=getData",function(res) {
        console.log(1);//不进入 不能删除
    },"jsonp");//进入getData函数

$.post("https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=火车&cb=getData",function(res) {
       console.log(1);//不进入 不能删除
   },"jsonp");//进入getData函数

ajax 事件

ajaxSend(callback)		//AJAX 请求发送时执行函数
ajaxStart(callback)		//AJAX 请求开始时执行函数
ajaxComplete(callback)  //AJAX 请求完成时执行函数
ajaxStop(callback)		//AJAX 请求结束时执行函数
ajaxSuccess(callback)	//AJAX 请求成功时执行函数
ajaxError(callback)		//AJAX 请求发生错误时执行函数
    $(".btn").click(function () {
        $.ajax({
            method: "get",
            data: {id: 101051107},
            url: "https://api.help.bj.cn/apis/weather/",
            success: function (res) { console.log(res);}
        })
    }).ajaxStart(function () {
        console.log("ajaxStart");
    }).ajaxStop(function () {
        console.log("ajaxStop");
    }).ajaxSend(function () {
        console.log("ajaxSend");
    }).ajaxComplete(function () {
        console.log("ajaxComplete");
    });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值