【Java Web Homework】JavaScript在发送AJAX请求时,URL的域名地址是使用绝对地址还是相对地址 & 什么是浏览器跨域访问操作,js如何实现


一、JavaScript在发送AJAX请求时,URL的域名地址是使用绝对地址还是相对地址?

1、AJAX定义:

       首先,题目中提及的AJAX定义如下:

Ajax(Asynchronous Javascript And XML,异步JavaScript和XML)是一种创建交互式网页应用的网页开发技术,使得“不刷新页面向服务器发起请求”成为可能。

       字面意思很好理解,大致就是,即使我不刷新我的页面,也可以向服务器发起请求(请求获得某某参数值或请求获得某种服务…etc)

2、发送请求的两种方式

       发送请求的两种方式:创建XMLHTTPRequest对象后,Ajax就可以使用XMLHttpRequest对象的open()和send()方法将请求发送至服务器,请求分为GET方式请求和POST方式请求。open函数带的参数为(method,url,async),send带的参数为(content)。

3、URL的域名地址使用的是相对地址还是绝对地址?

       URL的域名发送的时候使用的是绝对地址,但是使用的时候可以使用相对地址也可以使用绝对地址,但是最后都会被统一转换为绝对地址

二、什么是浏览器跨域访问操作,js如何实现?

1、什么是跨域?

       跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。
       跨域问题来源于浏览器的同源策略,浏览器为了提高网站的安全性,在发送ajax请求时,只有在当前页面地址与请求地址的协议+域名+端口号相同时才允许访问,否则会被拦截。

2、js如何实现跨域?

       js实现跨域,就使用JSONP,JSONP和JSON很像,JSONP=JSON+Padding(此处可以理解为填充),大致方法如下:

       在js中,我们直接用XMLHttpRequest请求不同域上的数据时,是不可以的。但是,在页面上引入不同域上的js脚本文件却是可以的,jsonp正是利用这个特性来实现的。
       比如,有个a.html页面,它里面的代码需要利用ajax获取一个不同域上的json数据,假设这个json数据地址是http://example.com/data.php,那么a.html中的代码就可以这样:
在这里插入图片描述
       因为是当做一个js文件来引入的,所以http://example.com/data.php返回的必须是一个能执行的js文件,所以这个页面的php代码可能是这样的:

QQ截图20130613230631

       最终那个页面输出的结果是:

QQ截图20130613230631

       所以通过http://example.com/data.php?callback=dosomething得到的js文件,就是我们之前定义的dosomething函数,并且它的参数就是我们需要的json数据,这样我们就跨域获得了我们需要的数据。
       这样jsonp的原理就很清楚了,通过script标签引入一个js文件,这个js文件载入成功后会执行我们在url参数中指定的函数,并且会把我们需要的json数据作为参数传入。所以jsonp是需要服务器端的页面进行相应的配合的。
       知道jsonp跨域的原理后我们就可以用js动态生成script标签来进行跨域操作了,而不用特意的手动的书写那些script标签。如果你的页面使用jquery,那么通过它封装的方法就能很方便的来进行jsonp操作了。
在这里插入图片描述

       原理是一样的,只不过我们不需要手动的插入script标签以及定义回掉函数。jquery会自动生成一个全局函数来替换callback=?中的问号,之后获取到数据后又会自动销毁,实际上就是起一个临时代理函数的作用。$.getJSON方法会自动判断是否跨域,不跨域的话,就调用普通的ajax方法;跨域的话,则会以异步加载js文件的形式来调用jsonp的回调函数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值