场景

假如有两个域名不同的服务器, a.com和b.com,在b.com/b_return_js.PHP这个接口里, 可以获取一些数据。 当然,假如是b.com的页面里, 可以使用ajax,直接请求这个接口, 但如果在a.com的页面里如果请求呢。

b_return_js.PHP的接口代码:

代码如下:

'tony','age'=>25),

array('username'=>'yimeng','age'=>23),

array('username'=>'ermeng','age'=>22),

array('username'=>'sanmeng','age'=>21),

);

shuffle($a);

echo 'var userdata = '.json_encode($a).';'; //一般如果是b.com的站内请求就直接返回json_encode($a)了, 但如果要用src属性实现跨域, 这里我们需要将该值赋给一个js变量, 保证在script标签加载后的页面里能获取到这个数据并使用。

简单实现

有一种简单的方法就是在a.com下的页面里, 直接

代码如下:

>

这样在a.com的页面里就能直接获取到这个接口里返回的数据了。

但这里有一个缺陷,这个数据只能在页面加载的时候获取到, 假如我们想要使用ajax那种可以随时获取新的接口数据的方式就不太适用了, 例如点击一个按钮, 从这个接口获取数据局部刷新, 这种方式就有一些不合适了。

类ajax实现

其实实现上面说的类ajax的思路就是在ajax条件触发的时候, 重新生成一遍上面的那个标签, 从而再次从接口获取数据, 但实际上实现起来还是略有难度(至少对我来说费了不少功夫)。

上代码:

假如a.com/scriptSrc.PHP页面下有一个按钮

PHP接口获取数据, 类似ajax的实现代码:

代码如下:

function getData()

{

console.log(userdata);

}

$('#ajax_request_from_b').click(function(){

//每次都需要重新加载这个script标签, 因此每次都要重新生成一个新的script标 签保证能从跨域服务器获取数据

if(ele && ele.parentNode)

{

//ele.parentNode.removeChild(ele); //这种删除不能将ele彻底从内存删除,只是移除了在dom中的位置

for (var property in ele) {

delete ele[property]; //彻底删除

}

}

ele = document.createElement('script'); //这是一个新的ele

createScript();

document.getElementsByTagName("head")[0].appendChild(ele);

ele.onload = function(){getData()}; //script元素加载后方可获取userdata, 每次获取的都是随机顺序的用户信息

});

这样你每次点击按钮, 都会重新从接口获取一遍数据, 效果就类似于ajax, 但这是一种js跨域的方法实现, 虽然有些吃力不讨好, 但不失为一种思路。

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

ajax上送src,使用script的src实现跨域和类似ajax效果相关推荐

  1. Django 【第十九篇】JS实现的ajax、同源策略和前端JSONP解决跨域问题

    一.回顾jQuery实现的ajax 首先说一下ajax的优缺点 优点:AJAX使用Javascript技术向服务器发送异步请求: AJAX无须刷新整个页面: 因为服务器响应内容不再是整个页面,而是页面 ...

  2. ajax跨域情况解决方案,ajax跨域解决方案.docx

    ajax跨域解决方案 ajax跨域解决方案 篇一:使用JSONP解决Ajax跨域访问问题 使用JSONP解决Ajax跨域访问问题 JSONP(JSON with Padding)是JSON的一种&qu ...

  3. jsonp跨域的缺点ajax缺点,浅析JSONP解决Ajax跨域访问问题的思路详解

    前几天,工作上有一新需求,需要前端web页面异步调用后台的Webservice方法返回信息.实现方法有多种,本例采用jQuery+Ajax,完成后,在本地调试了一切ok,但是部署到服务器上以后就出现问 ...

  4. ajax跨域服务器404,Ajax和跨域

    集成用多了连这都忘了系列(三) AJAX 1.什么是Ajax ajax=异步js和XML,是一种用于创建快速动态网页的的技术,可以在整个网页不刷新的情况下对网页的某一部分进行更新. 2.ajax工作原 ...

  5. Ajax(jQuery封装),表单form提交(Ajax),art-template模板引擎,原生Ajax,XML和JSON,axios,跨域和JSONP,防抖和节流,HTTP协议

    目录 服务器基本概念 1.URL 2.URL地址的组成部分 3. 图解客户端与服务器的通信过程 4.网页中如何请求数据 5.资源的请求方式 Ajax jQuery中的Ajax 1. $.get()函数 ...

  6. Ajax入门笔记(原生Ajax、jQuery、axios、fetch、跨域SONP、CORS)

    文章目录 一.基础知识 1.1AJAX简介 1.2 AJAX的特点 1.2.1 AJAX 的优点 1.2.2 AJAX 的缺点 1.3 XML简介 1.4 HTTP简介 1.4.1 请求报文 1.4. ...

  7. 原生ajax(常见的http状态码/同源-跨域)

    原生ajax原理: ajax:一种请求数据的方式,不需要刷新整个页面:     ajax的技术核心是 XMLHttpRequest 对象:     ajax 请求过程:创建 XMLHttpReques ...

  8. 用Dojo实现Ajax请求:XH“.NET研究”R、跨域、及其他

    在任何浏览器上方便地实现Ajax请求是每一个Ajax框架的初衷.Dojo在这方面无疑提供了非常丰富的支持.除了XMLHttpRequest之外,动态script.iframe.RPC也应有尽有,并且接 ...

  9. php p3p跨域登录,php+ajax实现多域名跨域登录例子(基于P3P)

    在以前如果我们要实现php+ajax实现多域名跨域登录的话很多朋友都碰到无法正常跨域登录问题,下面我来给大家解决跨域名登录问题,有需要的参考. 该同步登陆需求需满足以下三个关键点: 1)A域名下登陆的 ...

最新文章

  1. 轻量级简单队列服务HTTPSQS安装与使用
  2. strut2服务器与android交互数据,用Android搭建客户端 手机和服务器交互开发
  3. 皮一皮:这才是「真 · 老司机」...
  4. php 管理 mysql 数据库 代码_安装并使用phpMyAdmin管理MySQL数据库_php
  5. 致不可重新来过一次的青春(上)
  6. C#中的System.Net.Sockets内部实现原理
  7. 不出来信号 quartus_男人一旦动了真情,会向你发出这6个“信号”不爱的人装不出来...
  8. android 百分数与进度显示
  9. Spring Data JPA 从入门到精通~事务的处理及其讲解
  10. 猛料一顿狂堆!华为P40 Pro详细参数被曝光
  11. ubuntu16.04下pycharm中无法使用中文输入法
  12. mysql 随机槽_mysql怎样高效率随机获取n条数据
  13. Nginx源码分析 - HTTP模块篇 - TCP连接建立过程(21)
  14. 两年前,梦开始的地方.
  15. 小菜找实习-动态规划
  16. word里双横线怎么打_在word中怎么画直线、双直线、虚线
  17. Lambert漫反射模型
  18. 卡耐基梅隆大学计算机金融专业,卡内基梅隆大学硕士费用 - 卡耐基梅隆大学计算机金融MS研究生接不接受gre成绩?不?...
  19. 【同步与补偿】频率偏移
  20. 《神经科学:探索脑》学习笔记(第3章 静息态的神经元膜)

热门文章

  1. 【Spring】Spring 依赖注入之手动注入
  2. 【MySQL】MySQL 中的函数
  3. Memcache图形化管理工具MemAdmin
  4. fastjson 判断value是对象还是数组
  5. Orcale的存储过程
  6. Using Apache Solr‘s boost query function with Spring in Java
  7. Python中数组,列表,元组的区别、定义、功能
  8. .netframewor划时代的系统:纪念Vista发布5周年
  9. Vue.js 源码分析(九) 基础篇 生命周期详解
  10. postman连接mysql执行操作