Ajax作业

1.

如果要处理 $.ajax() 得到的数据,则需要使用回调函数:beforeSend、error、dataFilter、success、complete

  • beforeSend
    在发送请求之前调用,并且传入一个 XMLHttpRequest 作为参数。
  • error
    在请求出错时调用。传入 XMLHttpRequest 对象,描述错误类型的字符串以及一个异常对象(如果有的话)
  • dataFilter
    在请求成功之后调用。传入返回的数据以及 "dataType" 参数的值。并且必须返回新的数据(可能是处理过的)传递给 success 回调函数。
  • success
    当请求之后调用。传入返回后的数据,以及包含成功代码的字符串。
  • complete
    当请求完成之后调用这个函数,无论成功或失败。传入 XMLHttpRequest 对象,以及一个包含成功或错误代码的字符串。

2.

var ajax = new XMLHttpRequest();
ajax.prototype.request(url,style,fun) = request(url,style,fun);
ajax.prototype.request(url,style,fun,text) = request(url,style,fun,text);

function request(url,style,fun){
  this.open(style,url,true);
  myCallback(this);
}
function request(url,style,fun,text){
  this.send(style,url,text,true);
  myCallback(this);
}
function myCallback(xhr) { 
   alert(xhr.responseText); 
 }

 ajax.request(“somefile.txt”, ”get”, myCallback);
 ajax.request(“script.php”, ”post”, myCallback, ”first=John&last=Smith”);

3.

原因:(3个原因同时满足,才可能产生跨域问题)

  • 浏览器限制
  • 跨域(协议,主机名,端口号中有一个不同就产生跨域)
  • XHR(XMLHttpRequest)请求

4.

  1. JSONP方式解决跨域问题
    jsonp解决跨域问题是一个比较古老的方案(实际中不推荐使用),这里做简单介绍(实际项目中如果要使用JSONP,一般会使用JQ等对JSONP进行了封装的类库来进行ajax请求)
    实现过程:
  • 客户端网页网页通过添加一个

你可能感兴趣的:(Ajax作业)