Example #1
0
    JSONPI.prototype.send = function(opts, callback){

        var url,
            that = this,
            id = new Date().getTime(),
            jsonpiId = "jsonpi_"+id;

        this.jsonpiId = jsonpiId; //保存jsonpId

        window[jsonpiId] = function(){
            callback.call(this, arguments);
            that.abort();
        };

        if(Base.isString(opts)){
            url = opts;
        }else{
            //选项预处理
            opts=this._opts=this.optsPrepare(opts);
            url = opts['url']+"?"+Uri.param(opts["data"]);
        }

        url = url +"&"+opts["callback"]+"="+jsonpiId;


        //TODO 需测试Iframe是否会再次触发onload事件
        var onComplete = function(){
            if(Base.isFunction(opts["complete"])) opts["complete"]();
            that.abort();
        };

        Remote.requstWithResponse(opts["method"], url, opts["data"], jsonpiId);
    };
Example #2
0
     Request.prototype.optsPrepare = function(opts){
    	var data=opts['data']||{},form="";
		
        if (opts['form']) {
            form = this.serializeForm(opts['form']);
        }
	
		if(Base.isString(data)){
			data=Uri.deparam(data);
		}

		//浏览器缓存,请求中添加时间标签,不同请求浏览器不缓存
		if (!opts['cache']) {
			data['_t'] = new Date().getTime();
		}

		//合并data与form中的数据,data数据优先级比form高
   		opts['data']  = form + Uri.param(data);
	
		//请求过期检查
		if ( opts['async'] && opts['timeout'] > 0 ) {
			var that = this;
			setTimeout(function() {
					that.abort();
			}, opts['timeout']);
		}
		
        return Base.mix(opts,this._opts);
        
    };