Ajax オブジェクトを自作
Twippera で使うために Ajax オブジェクトを自作していたが、タイムアウト処理がうまくいかず…。
"JavaScript 第5版" に参考になるコードが載っていたので作り直した。
var Ajax = {}; Ajax.request = function(url, callback, options) { var xhr = new XMLHttpRequest(); var timer; if(options.timeout) { timer = setTimeout(function() { xhr.abort(); if(options.timeoutHandler) { options.timeoutHandler(url); } }, options.timeout); } xhr.onreadystatechange = function() { if(xhr.readyState == 4) { if(timer) clearTimeout(timer); if(xhr.status == 200) { callback(xhr); } else { if(options.errorHandler) { options.errorHandler(xhr.status, xhr.statusText); } } } } var opts = { type: options.type || "GET", async: options.async || true, user: options.user || null, pass: options.pass || null, query: options.query || "", header: options.header || {} } if(opts.user && opts.pass) { xhr.open(opts.type, url, opts.async, opts.user, opts.pass); } else { xhr.open(opts.type, url, opts.async); } for(var t in opts.header) { xhr.setRequestHeader(t, opts.header[t]); } xhr.send(opts.query); }