ajax jsonp 原理 以及对数据的处理
ajax请求
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
&& xmlhttp.status==)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","/ajax/test1.txt",true);
xmlhttp.send();
jsonp请求原理
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>
<body>
<script>
function fn(data){
alert(data)
};
</script>
<script src="data.js"></script>
</body>
</html>
data.js 的内容是 fn([1,2,3,4,5])
输出结果:

实例:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<script src="jquery1.8.3.min.js"></script>
</head>
<body>
<dl id="Dl1">
</dl>
<script>
function fn(data) {
var oDl1 = $('#Dl1');
var html = '';
$.each(data,function(index,content){
$.each(content,function(i,c){
html += '<dt>'+c['title']+'</dt>';
html += '<dd>'+c['summary']+'</dd>';
})
})
oDl1.html(html)
};
var oScript = document.createElement('script');
oScript.src = 'https://api.douban.com/v2/book/search?q=javascript&count=10&callback=fn';
document.body.appendChild(oScript);
document.body.removeChild(oScript);
</script>
</body>
</html>
百度输入框实例:http://457375608.github.io/liujin/jsonp/百度输入框.html
豆瓣搜索框实例:http://457375608.github.io/liujin/jsonp/豆瓣输入框.html
处理数据:
//遍历数组 第一个参数是索引 第二个是内容
$.each( [0,1,2], function(i, n){
console.log( "索引:" + i + " 内容: " + n );
});
//遍历对象 第一个参数是key 第二个参数value
$.each( {name:"liujin","age":"24","sex":"boy"}, function(i, n){
console.log( "key:"+ i + " value: " + n );
});

//实例一
$(function(){
var data={
"HTML":["html 1","html 2","html 3"] ,
"CSS":["css 1","css 2","css 3"] ,
"JAVASCRIPT":["javascript 1","javascript 2","javascript 3"]
};
document.write("<dl>")
$.each(data,function(index,content){
document.write("<dt>"+index+"</dt>")
$.each(content,function(i,c){
document.write("<dd>"+c+"</dd>")
})
})
document.write("</dl>")
})
//实例二
var data=[{
小学生:[
{name:'小学生一 ',sex:'boy ',age:24},
{name:'小学生二 ',sex:'boy ',age:24},
{name:'小学生三 ',sex:'boy ',age:24}
]
},
{
中学生:[
{name:'中学生一 ',sex:'girl ',age:24},
{name:'中学生二 ',sex:'girl ',age:24},
{name:'中学生三 ',sex:'girl ',age:24}
]
},
{
大学生:[
{name:'大学生一 ',sex:'boy ',age:24},
{name:'大学生二 ',sex:'boy ',age:24},
{name:'大学生三 ',sex:'boy ',age:24}
]
}];
//jQuery实现
$.each(data,function(index,con1){
$.each(con1,function(index,con2){
document.write(index+"<br>");
$.each(con2,function(index,con3){
document.write(con3.name+" "+con3.sex+" "+con3.age+"<br>")
})
})
})
//js实现 for...in遍历对象 for遍历数组
for(var i=0;i<data.length;i++){ //遍历年级所在对象(数组)
for(var x in data[i]){ //输出对象属性名(对象)
document.write(x+"<br>");
for(var a=0;a<data[i][x].length;a++){ //遍历对象属性值(数组)
document.write(data[i][x][a].name+""+data[i][x][a].sex+""+data[i][x][a].age+"<br>")
}
}
}
//$("").load(url,data,function(response,status,xhr))
$("#result").load("ajax/test.html"); //加载整个页面
$("#result").load("ajax/test.html #container"); //加载页面的一部分
$("#result").load("ajax/test.html", function() { //回调函数
alert("Load was performed.");
});
//$.get(URL,function(数据,状态){});
//等价于
$.ajax({
type:GET,
url: url,
success: function(data,status){
}
});
//$.post(url,data,function(数据,状态){})
//等价于
$.ajax({
type: 'POST',
url: url,
data: {key1:value1,key2:value2},
success:function(data,status){
}
});
$.ajax({
url:"", //string 请求地址
type:"", //string 请求方式(post/get)
timeout:"", //number 超时时间(毫秒)
data:"", //json 发送数据 {key:valut,key:value}
dataType:"", //string xml,html,script,json,text
beforeSent:"", //function 请求之前 function(XMLHttpRequest)
complete:"", //function 请求完成 function(XMLHttpRequest,textStatus)
seccess:"", //function 请求成功 function(data,textStatus)
error:"" //function 请求失败 function(XMLHttpRequest,textStatus,errorThrown)
});
//实例
$.ajax({
type: "GET",
url: "test.json",
dataType: "json",
success : function(data){
$('#resText').empty();
var html = '';
$.each( data , function(Index, comment) { //处理json
html += '<div class="comment"><h6>' + comment['username'] + ':</h6><p class="para">' + comment['content'] + '</p></div>';
})
$('#resText').html(html);
}
});
name:小学生一 sex:boy age:24 name:小学生二 sex:boy age:24 name:小学生三 sex:boy age:24 name:中学生一 sex:girl age:24 name:中学生二 sex:girl age:24 name:中学生三 sex:girl age:24 name:大学生一 sex:boy age:24 name:大学生二 sex:boy age:24 name:大学生三 sex:boy age:24
$.each(data,function(i,n){
$.each(n,function(k,v){
$.each(v,function(i,n){
$.each(n,function(a,b){
document.write(a+':'+b)
})
document.write('<br>')
})
})
})
ajax jsonp 原理 以及对数据的处理的更多相关文章
- Ajax & JSONP 原理
Ajax & JSONP 原理 AJAX不是JavaScript的规范,它只是一个哥们"发明"的缩写:Asynchronous JavaScript and XML,意思就 ...
- jQuery-1.9.1源码分析系列(十六)ajax——jsonp原理
json jsonp 类型 "json": 把响应的结果当作 JSON 执行,并返回一个JavaScript对象.如果指定的是json,响应结果作为一个对象,在传递给成功处理函数 ...
- jQuery源码分析系列(35) : Ajax - jsonp的实现与原理
ajax的核心是通过XmlHttpRequest获取非本页内容,而jsonp的核心则是动态添加<script>标签来调用服务器提供的js脚本 json核心就是:允许用户传递一个callba ...
- Ajax跨域:Jsonp原理解析
推荐先看下这篇文章:JS跨域(ajax跨域.iframe跨域)解决方法及原理详解(jsonp) JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在JavaScript中,有一个很重 ...
- JQuery实现Ajax跨域访问--Jsonp原理
JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略).这一策略对于Java ...
- ajax工作原理及jsonp跨域详解
一.Ajax简介 ajax = 异步 JavaScript 和 XML. ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术.我们知道,传统的网页(不使用ajax)如果需要更新内容, ...
- ajax工作原理,Jsonp原理
Ajax工作原理是 相当于在用户和服务器之间加了-个中间层(AJAX引擎),使用户操作与服务器响应异步化. 对于用户请求ajax引擎会做一些数据验证和数据处理,不是所有请求都提交给服务器,当需要从服务 ...
- AJAX JSONP源码实现(原理解析)
关于JSONP以及跨域问题,请自行搜索. 本文重点给出AJAX JSONP的模拟实现代码,代码中JSONP的基本原理也一目了然. <html xmlns="http://www.w3. ...
- jsonp跨域获取数据小解
jsonp跨域获取数据小解 由于浏览器有同源策略,所以要想获取非同源(协议,域名,端口三者有一不同都算非同源)的页面的数据,就得进行跨域 (1) jsonp原理 由于script标签的src属性可以访 ...
随机推荐
- javad的Collection集合
集合框架:★★★★★,用于存储数据的容器. 特点: 1:对象封装数据,对象多了也需要存储.集合用于存储对象. 2:对象的个数确定可以使用数组,但是不确定怎么办?可以用集合.因为集合是可变长度的. 集合 ...
- spring中解析xml
解析xml有SAX,Stax,dom等方式,那么spring中是如何解析xml文件的呢? Document doc = this.documentLoader.loadDocument( inputS ...
- XMPPFrameWork IOS 开发(六)聊天室
原始地址:XMPPFrameWork IOS 开发(六)聊天室 聊天室 //初始化聊天室 XMPPJID *roomJID = [XMPPJID jidWithString:ROOM_JID]; xm ...
- 402. Remove K Digits
(English version is after the code part) 这个题做起来比看起来容易,然后我也没仔细想,先速度刷完,以后再看有没有改进. 用这个来说: 1 2 4 3 2 2 1 ...
- JAVA数据类型与DB2、Oracle、Sybase以及SQL Server对应关系
java.sql.Types Java IBM DB2 Oracle Sybase SQL-SERVER BIGINT java.lang.long BIGINT NUMBER (38, ...
- Page Cache buffer Cache
https://www.thomas-krenn.com/en/wiki/Linux_Page_Cache_Basics References Jump up ↑ The Buffer Cache ( ...
- 用ISE14.7引用功能强大的UltraEdit编写Verilog
对于FPGA初学者来说,使用FPGA编译软件所带的编辑器写代码已经完全够用,但随着工程的不断增大,ISE自带的编辑器用起来显得有点力不从心,所以本文中我将为大家分享一款功能强大的编辑软件UltraEd ...
- 窗口对象的方法 prompt() 用来输入数据
prompt() 窗口对象的方法,用来输入信息的 一.window.prompt('提示信息',默认值); 1.例: window.prompt('请输入文字','这是默认值'); var us ...
- Notepad++中的复活节彩蛋(easter egg)
Notepad++是windows下的一个强大的文本编辑器; 它免费,开源, 比windows自带的记事本强大百倍; 我自己的感觉: 1.打开超大的文本文件,比方100M大小的文本格式的数据,记事本会 ...
- Android 图标上面添加提醒(一)使用Canvas绘制
版权声明:本文为博主原创文章,未经博主允许不得转载. 在我们开发一些如通讯录.社交等应用或者应用添加新功能模块时,会考虑在对应的图标上加上未读信息的数量,或者是新功能提醒的图标,这样不占太大空间还能达 ...