Ajax.NET中的ajax.js脚本

这是由
< script language = " javascript "  src = " ajax/common.ashx " ></ script >
这一行请求所生成的脚本文件.该文件作为程序集的资源嵌入到程序集中.

<script src="ajax/common.ashx" language="javascript" type="text/javascript"></script>
var  requests  =   new  Array();

if ( typeof (XMLHttpRequest)  ==   ' undefined ' )
var  XMLHttpRequest  =   function ()
{
    
var request = null;
    
try
    
{
        request 
= new ActiveXObject('Msxml2.XMLHTTP');
    }

    
catch(e)
    
{
        
try
        
{
            request 
= new ActiveXObject('Microsoft.XMLHTTP');
        }

        
catch(ee)
        
{}
    }

    
return request;
}


function  ajax_stop()
{
    
for(var i=0; i<requests.length; i++)
    
{
        
if(requests[i] != null)
            requests[i].abort();
    }

}


function  ajax_create_request(context)
{
    
for(var i=0; i<requests.length; i++)
    
{
        
if(requests[i].readyState == 4)
        
{
            requests[i].abort();
            requests[i].context 
= context;
            
return requests[i];
        }

    }


    
var pos = requests.length;
    
    requests[pos] 
= Object();
    requests[pos].obj 
= new XMLHttpRequest();
    requests[pos].context 
= context;
    
    
return requests[pos];
}


function  ajax_request(url, data, callback, context)
{
    
var request = ajax_create_request(context);
    
var async = typeof(callback) == 'function';

    
if(async) request.obj.onreadystatechange = function()
    
{
        
if(request.obj.readyState == 4)
            callback(
new ajax_response(request));
    }

    
    request.obj.open(
'POST', url, async);
    request.obj.send(data);
    
    
if(!async)
        
return new ajax_response(request);
}


function  ajax_response(request)
{
    
this.request = request.obj;
    
this.error = null;
    
this.value = null;
    
this.context = request.context;
    
    
if(request.obj.status == 200)
    
{
        
try
        
{
            
this.value = object_from_json(request);
            
            
if(this.value && this.value.error)
            
{
                
this.error = this.value.error;
                
this.value = null;
            }

        }

        
catch(e)
        
{
            
this.error = new ajax_error(e.name, e.description, e.number);
        }

    }

    
else
    
{
        
this.error = new ajax_error('HTTP request failed with status: ' + request.obj.status, request.obj.status);
    }

    
    
return this;
}


function  enc(s)
{
    
return s == null ? null : s.toString().replace(/%/g, "%26").replace(/=/g, "%3D");
}


function  object_from_json(request)
{
    
if(request.obj.responseXML != null && request.obj.responseXML.xml != null && request.obj.responseXML.xml != '')
        
return request.obj.responseXML;
    
    
var r = null;    
    eval(
'r=' + request.obj.responseText + ';');
    
return r;
}


function  ajax_error(name, description, number)
{
    
this.name = name;
    
this.description = description;
    
this.number = number;

    
return this;
}


ajax_error.prototype.toString 
=   function ()
{
    
return this.name + " " + this.description;
}


function  json_from_object(o)
{
    
if(o == null)
        
return 'null';

    
switch(typeof(o))
    
{
        
case 'object':
            
if(o.constructor == Array)        // checks if it is an array [,,,]
            {
                
var s = '';
                
for(var i=0; i<o.length; ++i)
                
{
                    s 
+= json_from_object(o[i]);

                    
if(i < o.length -1)
                        s 
+= ',';
                }


                
return '[' + s + ']';
            }

            
break;
        
case 'string':
            
return '"' + o.replace(/(["/])/g, '/$1') + '"';
        default:
            return String(o);
    }
}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值