ajax

1 远古时代的ajax 做无刷新请求
方法1. http协议 204 返回表示无内容,导致后台请求 前端页面不刷新
header(‘Http/1.1 201 No Content’) 当页面收到204时 页面不做跳转
方法2 img src 请求后台

 var hh = document.createElement('img')   创建img标签
 hh.setAttribute('src','请求路径')     

方法3 利用iframe属性 ajax 注册提交表单 页面无刷新

<from action='请求地址' method="post" target="reg"></from>
<iframe name="reg"></iframe>

所谓的ajax 页面不刷新的情况下 利用xmlhttprequest 发送http请求 js的网格化
论述题
ajax能实现上传吗?
分析: 从http 的协议角度来看,上传文件则要把文件的内容发送到服务器,如果可以,XMLHttpRequest 的对象在post数据时,把文件内容也发送过去,由此推出 XHR对象获取了你想要上传的内容, js读取了你本地的文件内容 出于安全原因 js是不能读取到文件内容的 所以无法实现上传文件。
ajax上传插件是怎么实现的?
方法1 iframe
方法2 flash 如swfuploaded
方法3 html5实现 (增加了文件读取api)

2 ajax 现代化 XMLHttpRequest 对象一个专门的http请求工具

function createXHR(){
  var xhr = null
  if(window.XMLHttpRequest){
    xhr = new XMLHttpRequest()   按标准 即可得到
  }else if(window.ActiveXObject){
    xhr = new ActiveXObject('Microsoft.XMLHTTP')   考虑低版本IE678
  }
  return xhr
}

利用XHR 发送请求
get

var xhr = createXHR()    创建XHR
xhr.open('GET',‘路径’,true)  打开链接
xhr.send(null)    发送请求

post

var xhr = createXHR()    创建XHR
xhr.open('POST',‘路径’,true)  打开链接
var un = $('#username').value    收集表单数据
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded')  设置头信息
xhr.onreadyStateChange = function(){
   if(this.readystate==4&&this.status==200){
        alert(this.responseText)
 
   }
}---------------------状态判断 当状态改变的时候    如果 成功 时4 
xhr.send('username='+un)    发送请求
注:
this.responseText   返回值类型  不考虑html5新标准 返回值只有普通文本/xml文档
作为xml      xmldom -- xml标签
s = xmldom.getElementsByTagName('book')[0].childNodes    book下的子节点
s[0].nodeValue  
作为普通文本
1 后台返回大段的html代码,直接innerHTMl到前端页面
document.getBlementById('S').innerHTML = this.responseText
2 json格式 再用js解析
eval('('+this.responseText+')')    解析成一个对象  打点调用
3 返回字符串  如 1,2
注 :
this.readystate 状态码
0   xhr刚刚创建的时候 
1 xhr.open()之后 可以设置头信息
2 当接收到Content-Type之后
3 接收body主体信息完毕后
4 成功结束之后

同步false 按顺序执行 等几秒会等
异步 true 同时 不会等

iframe 文件上传

<form action="路径" method="post" enctype="multipart/form-data" onsubmit="return send()">
   <input type="file" name="pic">
   <input type="submit" value="提交">
</form>
send(){
   var name = 'up'+Math.random()
   $('<iframe name='+name+' width="0" height='0" frameBorder="0"></iframe>').appendTo($('body'))
  $('from').attr('target',name)
}

HTML5文件上传

<form id="tForm">
   <input  type="file" name="pic" onChange="selfile()" />
   <input onClick="send()">
</form>
selfile(){
   var fn = document.getElementsByTagName('input')[0].files[0]
   var fd = new FormData()
   fd.append(fn.name,fn)  把文件追加到表单数据
   请求   post 
   window.URL.createObjectURL(pic)   把二进制文件直接读取成浏览器显示得资源
   若要是想显示进度条
   xhr.upload.onprogress = function(e){
      if(e.lengthComputable){
         var precent = e.loaded/e.total *100    获取总文件大小/以上传的
      }
   }
   样式的话是 两个div     设置宽 高   一个设置为0%  然后修改第二个div的width
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值