苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 5800|回复: 3

[讨论] 如何处理ajax的回调方法问题

[复制链接]
发表于 2014-10-8 22:45:46 | 显示全部楼层 |阅读模式
最近在做一个登陆模块,根据对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回调方法应用,所以一时间没有头绪。


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2014-10-9 08:08:38 | 显示全部楼层
这其实就是连续了两次请求,你抓两次包分别请求就行,就是你说的现在的方法,如果必须要到服务器才能得到结果那暂时没有什么好方法,如果根据第一次结果可以计算出第二次的,这个可以自己写个方法在本地执行,速度自然就快了
发表于 2015-1-15 20:44:32 | 显示全部楼层
楼主考虑过飞飞的思路没有?结果如何?好想知道
 楼主| 发表于 2015-1-19 11:31:09 | 显示全部楼层
我简单说,其实我的方法跟苏飞说的应该是一样的,先生成一个毫秒数,再访问一次页面,然后再生成一个毫秒数,两次毫秒数结果相减,得到我要的数值,因为http响应需要时间,所以可以这样做,得到一个基本正确的数值
但是实际使用还是有一定的区别,影响不算很大,其实后来我想通了,取这ping值,无非是给你分配一台快的服务器,你也可以认为的把时间加长一点,让他给你分配个快的,但是后面这种想法我没实验过
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-27 08:24

© 2014-2021

快速回复 返回顶部 返回列表