博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jQuery实现跨域请求
阅读量:5314 次
发布时间:2019-06-14

本文共 939 字,大约阅读时间需要 3 分钟。

我们都知道,xhr(XMLHttpRequest)是不允许跨域的。而jQuery的ajax方法是基于xhr的,所以,直接使用它也是无法跨域的。一般的,我们是如下使用$.ajax方法的:

$.ajax({  type : "GET",  url : "the path of server",  dataType : "json",  success : function(res) {      //这里写获取相应数据的代码  }});

我们这样调用的话,就是xhr请求。如果要实现跨域的话,就必须要使用动态脚本注入的技术。当然了,什么是动态脚本注入技术在这里我就不说了,有兴趣的可以自己去搜一下。jQuery已经帮我们封装好了jsonp的请求方法,我们直接调用它就行了,不必要知道他的底层是怎么实现的。jsonp请求的代码如下,只需要把dataType: "json"改成dataType: "jsonp"就行了:

$.ajax({  type : "GET",  url : "http://zhangzhanyu.nfreehost.com/jsonp.php",  dataType : "jsonp",  success : function(json) {    alert(json.msg);  }});
 
但是,直接这样子还不行的,需要注意的是,
跨域是要前端和后端配合才可以完成的。我们上面只是完成了前端的部分。因此,我们请求的php文件的代码要写成如下格式:

我们会发现,如果我们使用jsonp请求的话,会把一个名为callback的参数也传过来了,我们后台需要获取到这个参数值(事实他的值是一个函数名),然后再把需要返回到前端的数据放到这个callback里面当做参数就行了。

ps:由于做前端的本地不一定都有php环境,不方便测试。所以我把这个测试的php文件上传到了服务器,地址是http://zhangzhanyu.nfreehost.com/jsonp.php。需要测试的,可以直接把ajax方法里的url设置成这个地址就行了。

 

转载于:https://www.cnblogs.com/yugege/p/5167846.html

你可能感兴趣的文章
eclipse实现代码块折叠-类似于VS中的#region……#endregion
查看>>
IntelliJ IDEA——数据库集成工具(Database)的使用
查看>>
hdu 1671
查看>>
【操作系统】对操作系统的了解
查看>>
一种快速统计SQL Server每个表行数的方法
查看>>
SQL Server索引进阶第十篇:索引的内部结构
查看>>
软件工程第一次作业补充
查看>>
Spring中神奇@aotuWrited
查看>>
强大的XML
查看>>
RecycleView弹性滑动
查看>>
(十一)Jmeter另一种调试工具 HTTP Mirror Server
查看>>
Dubbo集群容错
查看>>
Oracle session连接数和inactive的问题记录【转】
查看>>
mysql 时区设置
查看>>
Oracle树形结构查询之prior的理解
查看>>
segnet 编译与测试
查看>>
linux lsof/netstat查看进程和端口号相关命令:
查看>>
解决Maven管理项目update Maven时,jre自动变为1.5
查看>>
学习笔记:log4j.properties配置
查看>>
flask sqlalchemy 单表查询
查看>>