ajax跨域两个方法
1在后端转换,调用API.
ajax瀑布流:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
#ul1{
width: 1000px;
margin: 100px auto;
/*border: 1px solid #d8d8d8;*/
}
#ul1 li{
list-style: none;
width: 227px;
float: left;
margin-right: 10px; }
#ul1 li div{
margin-bottom: 10px;
border: 1px solid #000;
box-sizing: border-box;
}
#ul1 li img{
width: 225px; }
</style>
<script type="text/javascript">
// 封装ajax方法
function ajax(method, url, data, success) {
var xhr = null;
try {
xhr = new XMLHttpRequest();
} catch (e) {
xhr = new ActiveXObject('Microsoft.XMLHTTP');
} if (method == 'get' && data) {
url += '?' + data;
} xhr.open(method,url,true);
if (method == 'get') {
xhr.send();
} else {
xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
xhr.send(data);
} xhr.onreadystatechange = function() { if ( xhr.readyState == 4 ) {
if ( xhr.status == 200 ) {
success && success(xhr.responseText);
} else {
alert('出错,Err:' + xhr.status);
}
} }
}
</script>
<script type="text/javascript">
window.onload=function(){ //1.初始化数据
var oUl=document.getElementById('ul1');
var aLi=oUl.getElementsByTagName('li'); var page=1; var b=true;
//var aLiLen=aLi.length; //2.通过数据文件接口getPics.php获取到数据,然后插入到li里面。
getlist(); function getlist(){
ajax('get','getPics.php','cpage='+page,function(data){ //var data=eval(data);
var data = JSON.parse(data); for(var i=0;i<data.length;i++){
var index2=getShort(); //通过一个函数,得到最短的li索引 var oDiv=document.createElement('div');//创建div节点 var oImg=document.createElement('img');//创建img节点
oImg.src=data[i].preview; //为新img节点增加src。宽高
oImg.style.width='225px';
oImg.style.height=data[i].height*(225/data[i].width)+'px';
oDiv.appendChild(oImg); //将img节点插入到div节点里面 var oP=document.createElement('p'); //新建p节点
oP.innerHTML=data[i].title;
oDiv.appendChild(oP); aLi[index2].appendChild(oDiv); //将新建的div节点插入到最短的li里面 } b=true; });
} //3.构造函数,对比得到最短的li,并且返回这个li的下标。
function getShort(){
var index=0;
var iH=aLi[index].offsetHeight; for(var i=1;i<aLi.length;i++){
if(aLi[i].offsetHeight<iH){
index=i;
iH=aLi[i].offsetHeight;
}
} return index;
} window.onscroll=function(){ var index2=getShort();
var oLishort=aLi[index2]; var scrollTop=document.documentElement.scrollTop || document.body.scrollTop; if((oLishort.offsetTop+oLishort.offsetHeight)<document.documentElement.clientHeight+scrollTop){
//alert('该加载了');
if(b){
b=false;
page++;
getlist();
} }
}; };
</script>
</head>
<body>
<ul id="ul1">
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</body>
</html>
<?php
header('Content-type:text/html; charset="utf-8"'); /*
API:
getPics.php 参数
cpage : 获取数据的页数
*/
$cpage = isset($_GET['cpage']) ? $_GET['cpage'] : 1; $url = 'http://www.wookmark.com/api/json/popular?page=' . $cpage; $content = file_get_contents($url);
$content = iconv('gbk', 'utf-8', $content); echo $content; ?>
2 使用script标签向另一个域上的资源进行请求,传递参数fn,保存将来要执行的js函数名。
搜索框:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
div{
margin:30px;
}
*{
list-style:none;
}
#input{
color: lightcoral;
} a:hover{
color: lightgreen;
}
a{
text-decoration: none;
color: lightcoral;
}
</style>
<script type="text/javascript">
window.onload=function(){
var input=document.getElementById("input");
input.onkeyup=function(){
var newScript=document.createElement("script");
newScript.src='https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd='+input.value+'&cb=fn';
document.body.appendChild(newScript);
} //
}
</script>
<script type="text/javascript">
function fn(data){
console.log(data);
// var newli=document.createElement("li");
var d=data.s[4];
var arr=data.s;
var len=arr.length;
console.log(len);
var html='';
for(var i=0;i<len;i++){
// var newli=document.createElement("li");
html+='<li><a href="https://www.baidu.com/s?wd='+arr[i]+'" target="_blank">'+arr[i]+'</a></li>'; }
var infoContainer=document.getElementById("infoContainer");
infoContainer.innerHTML=html;
console.log(d);
}
</script>
</head>
<body>
<div id="wrap">
<input type="text" name="" id="input" />
<ul id="infoContainer"> </ul>
</div>
</body>
</html>
调用百度接口,效果:
3 h5 xhr2方法
ajax跨域两个方法的更多相关文章
- 第114天:Ajax跨域请求解决方法(二)
一.什么是跨域 我们先回顾一下域名地址的组成: http:// www . google : 8080 / script/jquery.js http:// (协议号) www (子 ...
- 第113天:Ajax跨域请求解决方法
一.原生JS实现ajax 第一步获得XMLHttpRequest对象 第二步:设置状态监听函数 第三步:open一个连接,true是异步请求 第四部:send一个请求,可以发送一个对象和字符串,不需要 ...
- AJAX跨域的常见方法
由于在工作中需要使用AJAX请求其他域名下的请求,但是会出现拒绝访问的情况,这是因为基于安全的考虑,AJAX只能访问本地的资源,而不能跨域访问.比如说你的网站域名是aaa.com,想要通过AJAX请求 ...
- jquery Ajax跨域调用WebServices方法
由于公司需要开发一个手机页面,想提供给同事直接在手机上可以查询SAP资料.数据需要使用js调用webserver来获取. 因为初次使用Jquery调用Webserver,所以期间并不顺利.测试调用We ...
- Ajax跨域访问问题-方法大全
Case I. Web代理的方式 (on Server A) 即用户访问A网站时所产生的对B网站的跨域访问请求均提交到A网站的指定页面,由该页面代替用户页面完成交互,从而返回合适的结果.此方案可以解决 ...
- ajax 跨域 4种方法
一,传统的ajax方法 1,js代码 查看复制打印? $("#ajax").click(function(){ $.ajax({ type: "POST", u ...
- Ajax跨域请求action方法,无法传递及接收cookie信息(应用于系统登录认证及退出)解决方案
最近的项目中涉及到了应用ajax请求后台系统登录,身份认证失败,经过不断的调试终于找到解决方案. 应用场景: 项目测试环境:前端应用HTML,js,jQuery ajax请求,部署在Apache服务器 ...
- WebApi Ajax 跨域请求解决方法(CORS实现)
概述 ASP.NET Web API 的好用使用过的都知道,没有复杂的配置文件,一个简单的ApiController加上需要的Action就能工作.但是在使用API的时候总会遇到跨域请求的问题, 特别 ...
- WebApi Ajax 跨域请求解决方法(CORS实现)(作者:jianxuanbing)
概述 ASP.NET Web API 的好用使用过的都知道,没有复杂的配置文件,一个简单的ApiController加上需要的Action就能工作.但是在使用API的时候总会遇到跨域请求的问题,特别各 ...
随机推荐
- wing ide 注释
ctrl-.是批量注视 ctrl->向前缩进 ctrl-<向后缩进
- 国产中标麒麟Linux部署dotnet core 环境并运行项目 (二) 部署运行控制台项目
背景 在上一篇文章安装dotnet core,已经安装好dotnet core了.之前只是安装成功了dotnet, 输入dotnet --info,可以确认安装成功了,但是在运行代码时,还是报错了,本 ...
- C++ 学习笔记 (六) 继承- 子类与父类有同名函数,变量
学习了类的继承,今天说一下当父类与子类中有同名函数和变量时那么程序将怎么执行.首先明确当基类和子类有同名函数或者变量时,子类依然从父类继承. 举例说明: 例程说明: 父类和子类有同名的成员 data: ...
- JZOJ 100029. 【NOIP2017提高A组模拟7.8】陪审团
100029. [NOIP2017提高A组模拟7.8]陪审团 Time Limits: 1000 ms Memory Limits: 131072 KB Detailed Limits Got ...
- memset和memcpy
void memset(void s, int ch, size_t n); 函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 ...
- 记忆化搜索:POJ1579-Function Run Fun(最基础的记忆化搜索)
Function Run Fun Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 14815 Accepted: 7659 Des ...
- MapReduce进行数据查询和实现推简单荐系统
1 运行环境说明 1.1 硬软件环境 1.2 机器网络环境 2 书面作业1:计算员工相关 2.1 书面作业1内容 2.2 实现过程 2.2.1 准备测试数据 2.2.2 问题1:求各个部 ...
- Kinect安装
在连接kinect机器前,需要先安装两个软件,而在安装这两个软件前需要有vs2010(专业版本和快速版),因为需要包含.net framework 4.0 kinect sdk http://www. ...
- LOJ #6010. 「网络流 24 题」数字梯形
#6010. 「网络流 24 题」数字梯形 题目描述 给定一个由 n nn 行数字组成的数字梯形如下图所示.梯形的第一行有 m mm 个数字.从梯形的顶部的 m mm 个数字开始,在每个数字处可以 ...
- xgboost原理总结和代码展示
关于xgboost的学习推荐两篇博客,每篇看2遍,我都能看懂,你肯定没问题 两篇方法互通,知识点互补!记录下来,方便以后查看 第一篇:作者:milter链接:https://www.jianshu.c ...