苏飞论坛

标题: 如何处理ajax的回调方法问题 [打印本页]

作者: 冷剑无痕    时间: 2014-10-8 22:45
标题: 如何处理ajax的回调方法问题
最近在做一个登陆模块,根据对js的分析流程得知,网站先通过一个ajax方法访问主服务器,根据访问得到的值回调一个方法来实现一个类似于ping命令的作用,目的是得到一个访问服务器速度的值,根据这个值分配一个合理的跳转服务器地址给登陆者,方法如下:
function ping(url,callBack,async)
{
    var requestTime;
$.ajax({
  url: url,
  type: "GET",
  dataType: "jsonp", //設成jsonp來解決cross-domain requests的問題
  timeout: 5000, //超過5秒沒回應就timeout
  cache: false, //不保留cache
  async:async,  
  beforeSend: function(){
   requestTime = new Date().getTime();
  },
  complete: function(jqXHR, textStatus){
   var responseTime = new Date().getTime();
   var ackTime = responseTime - requestTime;         
   var status;
   if(textStatus == "parsererror"){
    status = "success";
   }
   else{
    status = textStatus;
   }
   callBack({
      url: url,
      ackTime: ackTime,
      status: status
     });
  }
});
};


现在我的实现方法是自己生成一个三位数的随机值发送给服务器来登陆,这样做可以实现正常的登陆,但是速度方面,肯定是不尽如人意的,现在就想跟大家讨论一下,这种情况有没有朋友遇到过,你们怎么做的?因为这是一个ajax回调方法应用,所以一时间没有头绪。

作者: 站长苏飞    时间: 2014-10-9 08:08
这其实就是连续了两次请求,你抓两次包分别请求就行,就是你说的现在的方法,如果必须要到服务器才能得到结果那暂时没有什么好方法,如果根据第一次结果可以计算出第二次的,这个可以自己写个方法在本地执行,速度自然就快了
作者: sealine    时间: 2015-1-15 20:44
楼主考虑过飞飞的思路没有?结果如何?好想知道
作者: 冷剑无痕    时间: 2015-1-19 11:31
我简单说,其实我的方法跟苏飞说的应该是一样的,先生成一个毫秒数,再访问一次页面,然后再生成一个毫秒数,两次毫秒数结果相减,得到我要的数值,因为http响应需要时间,所以可以这样做,得到一个基本正确的数值
但是实际使用还是有一定的区别,影响不算很大,其实后来我想通了,取这ping值,无非是给你分配一台快的服务器,你也可以认为的把时间加长一点,让他给你分配个快的,但是后面这种想法我没实验过




欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4