博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript 解决跨越问题
阅读量:7233 次
发布时间:2019-06-29

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

在开发过程中, 跨越的问题, 或多或少总会遇到...那么该如何解决呢?

因为相对来说还是比较常用的, 为了避免下次使用的时候, 不用再一顿百度....就记录一下吧...

导致跨越问题的原因

因为发送 ajax 请求必须遵循 同源策略, 所以就会出现跨越的问题

同源策略就是: 域名 协议 端口 都必须相同

解决跨越的方法

  • jsonp: 可以用原生js, 也可以使用第三方库(如: jQuery)
  • cors: 在服务端设置指定的响应头
  • nginx proxy: nginx 代理

原生JavaScript方式:

如果不行就请

// clientvar script = document.createElement("script");script.type = "text/javascript";script.src = "http://localhost/test/index.php?callback=jsonpCallback";document.head.appendChild(script);function jsonpCallback(data) {    console.log(data);}
// server$json = json_encode(['name'=>'alex']);echo "{$_GET['callback']}({$json})"; // jsonpCallback({name:'alex'});

此种方式,必须传递在请求参数中设置一个回调函数名, 然后在php端,用这个方法名包裹需要传递的数据

使用 jQuery 提供的 $.getJSON 方法

$.getJSON("http://localhost/test/index.php?callback=jsonpCallback", function (data) {    console.log(data);});

这种方式:回调方法名参数是可选的,默认就是 $.getJSON 中的第二个参数(闭包)

使用 jQuery 提供的 $.ajax 方法

$.ajax({    url: "http://localhost/test/index.php",    dataType: "jsonp",    jsonp: "callback", // 指定回调方法名的key    type: "get",    data: {},    success: function (data) {        console.log(data);  // 默认是以success方法作为回调方法    },    error: function() {        console.log("request error");    }});

此种方式, 默认是以 success 方法作为回调

注意点: JSONP 只能发送 get 类型的请求, 就算在第三中方式中指定 type: "post" 但是还是会自动转换为get 类型的请求

转载于:https://www.cnblogs.com/liaohui5/p/10581592.html

你可能感兴趣的文章
某未被少林寺吞并的小寺庙师徒的经典对话
查看>>
IT兄弟连 JavaWeb教程 JSP内置对象1
查看>>
IT兄弟连 JavaWeb教程 JSP内置对象经典案例
查看>>
XCode环境变量及路径设置 解决头文件找不到的问题
查看>>
[Go]链表的相关知识
查看>>
C# Json数据反序列化为Dictionary并根据关键字获取指定值1
查看>>
jS Ajax 上传文件报错"Uncaught TypeError: Illegal invocation"
查看>>
javascript、jquery获取网页的高度和宽度
查看>>
面向对象---代码练习(以车为案例)
查看>>
C#趋势图(highcharts插件)
查看>>
stm32的flash编程
查看>>
java多线程-AbstractQueuedSynchronizer
查看>>
苹果新的编程语言 Swift 语言进阶(十四)--扩展
查看>>
Md5加密方法
查看>>
转:zookeeper中Watcher和Notifications
查看>>
函数的参数
查看>>
Java编程规范
查看>>
【洛谷 P1070】道路游戏 (DP)
查看>>
走迷宫(回溯、深搜)判断能否到终点
查看>>
Zookeeper权限管理与Quota管理
查看>>