调用ajax的一种套路

function n(e) {
    if (exports.emit("pick", "success"),!A) {
        if (e.fields && Array.isArray(e.fields))
            S.ack = e.ack || S.ack,
            e.fields.forEach(function(e) {
                if (w[e.command])
                    w[e.command](e)
            }
            );
        if (!A)
            exports.emit("pick", "response", {
                status: 0,
                bid: S.bid,
                session: S.session,
                seq: S.seq,
                ack: S.ack
            })
    }
}
function r(e) {
    if (exports.emit("pick", "failure"),"offline" == e || "kicked" == e)
        exports.emit("error", "stop");
    else if (!A)
        exports.emit("pick", "response", {
            status: 1,
            bid: S.bid,
            session: S.session,
            seq: S.seq,
            ack: S.ack
        })
}
function o() {
    //超时操作
    exports.emit("pick", "timeout"),
    clearTimeout(y);
    var e = v;
    //  e为发出去的XMLHttpRequest对象
    if (v = null ,e.abort(),!v)
        a() //轮询a();重新去取数据。
}
//为什么要通过i封装一次,原因是提供统一接口。
function i(e, t, i, n, r) {
    if ("function" == typeof i)
        r = n,
        n = i;
    if (e == g.TYPE_HI)
        i = i || {},
        i.session = S.session,
        i.seq = S.seq++;
    //调用ajax,也是对ajax的封装
    return g.get(e, t, i, n, r)
}
function s(e, t) {
    return function() {
        var i = Array.prototype.slice.call(arguments);
        //闭包来判断私有静态变量b与返回的数据进行对比
        if (e === b) {
            //有返回,清除y。
            if (v = null ,clearTimeout(y),"success" == t)
                //调用成功
                n.apply(null , i);
            else
                //调用失败
                r.apply(null , i);
            //A初始时为false
            if (!A)
                setTimeout(function() {
                    a()
                }
                , 0)
        }
    }
}
function a() {
    if (!v)                            //v初始为NULL
        b++,                           //b初始为0
        v = i(g.TYPE_HI, "pick", {
                imuss: S.bid,
                ucid: S.ucid,
                ack: S.ack || ""
            },
            //这里的b传递到回调函数中。
            s(b, "success"), s(b, "failure")),
        //对发出的请求超时监控
        y = setTimeout(o, C.PICK_TIMEOUT)
}
时间: 2024-11-07 11:13:04

调用ajax的一种套路的相关文章

一种全新的自动调用ajax方法

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>Examples</title> <meta name="description" conte

玩转JavaScript OOP[4]&mdash;&mdash;实现继承的12种套路

概述 在之前的文章中,我们借助构造函数实现了"类",然后结合原型对象实现了"继承",并了解了JavaScript中原型链的概念. 理解这些内容,有助于我们更深入地进行JavaScript面向对象编程. 由于JavaScript是一门基于对象和原型的弱语言,灵活度非常高,这使得JavaScript有各种套路去实现继承.本篇文章将逐一介绍实现继承的12种套路,它们可以适用于不同的场景,总一种套路适合你. (亲:文章有点长,请点击右侧的「显示文章目录」按钮,以便导航和阅读

jQuery中ajax的4种常用请求方式

jQuery中ajax的4种常用请求方式: 1.$.ajax()返回其创建的 XMLHttpRequest 对象. $.ajax() 只有一个参数:参数 key/value 对象,包含各配置及回调函数信息.详细参数选项见下. 如果你指定了 dataType 选项,请确保服务器返回正确的 MIME 信息,(如 xml 返回 "text/xml"). 实例: 保存数据到服务器,成功时显示信息. $.ajax({ type: "post", dataType: "

调用AJAX返回JSON、XML数据类型

1.调用AJAX返回JSON数据 用下拉列表显示Nation表民族名称 主页面: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <he

通过XMLHttpRequest和jQuery实现ajax的几种方式

AJAX大家已经都知道了,是为了实现异步通讯,提高用户体验度,而将很多旧知识(XML,DOM,JavaScript,HTML,Jquery,Css……)重新融合的一个新的知识框架.而,XMLHttpRequest对象则是其中的重重之中,本篇文章主要给大家介绍通过XMLHttpRequest和jQuery实现ajax的几种方式 HTML代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="

Js--AJAX的小知识(一):ajax的五种状态

一.ajax的五种状态(readyState ) 0 - (未初始化)还没有调用send()方法 1 - (载入)已调用send()方法,正在发送请求 2 - (载入完成)send()方法执行完成,已经接收到全部响应内容 3 - (交互)正在解析响应内容 4 - (完成)响应内容解析完成,可以在客户端调用了 readyState 状态说明 (0)未初始化 此阶段确认XMLHttpRequest对象是否创建,并未调用open()方法进行未初始化作好准备.值未0表示对象已经存在,否则浏览器会报错--

Ajax打开三种页面的请求

xmlhttprequest对象可以打开两种方式的页面请求 1,.asmx格式的webservice页面. 2,.aspx格式的web窗体 其中web窗体可以是调用一新建的web窗体,同时调用和被调用页面可以是同一个页面,表达的可能不够清楚,还是看示例吧. 一.调用.asmx格式的webservice页面 1,新建一个ASP.NET应用程序,在该应用程序中添加一web服务页面(webservice页面),此时项目中有三个页面,web窗体页面(Default.aspx).webservice页面(

ajax的五种状态

ajax的五种状态(readyState ) 0 - (未初始化)还没有调用send()方法 1 - (载入)已调用send()方法,正在发送请求 2 - (载入完成)send()方法执行完成,已经接收到全部响应内容 3 - (交互)正在解析响应内容 4 - (完成)响应内容解析完成,可以在客户端调用了 readyState 状态说明 (0)未初始化 此阶段确认XMLHttpRequest对象是否创建,并未调用open()方法进行未初始化作好准备.值未0表示对象已经存在,否则浏览器会报错---对

老八系统简易调用AJAX

<script src="js/jquery-1.7.2.min.js"></script> <script> $(function(){ $("#txtaccount").blur(function(){ $.post("check.asp", { name:$(this).val(), type:"tjnickname" }, function(data,status){ if(data