にっき
2006/10/12 17:24:09
あくてぃぶXと謎のおぶじぇくと
あじゃこんぐさんとこでもちょっとだけ出てきた
javascriptのXMLHttpRequestおぶじぇくとを使って創ってたらいつの間にか
こんなになっちゃったにう(´ω`;【壁
IE6までのActiveXおぶじぇくとはしすてむ依存の謎おぶじぇくと(typeofでぷろぱてぃたいぷを調べるとunknownになる)
ってことでほとんどの値にぷろてくとがかかっててjavascriptからじゃ操作できないし
IE7ならXMLHttpRequestおぶじぇくとが使えるんだけど・・・
根本はあんまり変わってないみたいでXMLHttpRequestにprototype指定しようとすると怒られちゃう
ってjavascriptのでばっぐが難しいIEに限って問題がいっぱいだったにう(つx;【みかん
いちおういんすたんすを生成してからはちゃんとjavascriptで操作できるようになってたから
らっぱを創るまでもないかなぁ?ってことでclientを生成するときにぺったんするってことで・・・
こんなかんじで読み込んで
こんなかんじでくらいあんとを生成して
こんなかんじででーた受信完了後の処理をせっとしたら
で送信したらあとは待つだけにう?(´ω`。【壁
HTTP BODYで日本語とか記号みたいな変わった文字を使うときは
こんなかんじで連想配列にで〜たを入れてencodeStringを通すと整形してくれるはずにう d(・x・。【みかん
ちうい点はこのままだとwindow.onloadが他でもせっとされてたときにばってぃんぐしちゃうとこかにゃぁ・・・
ふみゅ・・・
すてきにめも用でもやっぱりこ〜どはいらいと機能ほしいかもにう・・・ (´・ω・`;【壁
javascriptのXMLHttpRequestおぶじぇくとを使って創ってたらいつの間にか
/**
* @package HttpRequestUtils
*
* @author mumin
* @version 1.0
*
* @requires XMLHttpRequest / ActiveXObject
**/
var HttpRequestUtils =
{
/**
* init
*
* @param void
*
* @return void
**/
init : function()
{
if(typeof XMLHttpRequest == 'undefined' && typeof ActiveXObject == 'function')
{
XMLHttpRequest = function()
{
var obj = this;
var ps = ['readyState','status','statusText','responseText','responseXML'];
try
{
this.nativeObject = new ActiveXObject('Msxml2.XMLHTTP');
}
catch(e)
{
this.nativeObject = new ActiveXObject('Microsoft.XMLHTTP');
}
this.readyState = 0;
this.onreadystatechange = function(){};
this.nativeObject.onreadystatechange = function()
{
for(var p in ps)
try
{
obj[ps[p]] = obj.nativeObject[ps[p]];
}
catch(e)
{
}
obj.onreadystatechange();
};
}
var ms = ['open','setRequestHeader','getResponseHeader','getAllResponseHeader','send','abort'];
for(var m in ms)
HttpRequestUtils.setMethod(ms[m]);
}
},
/**
* setMethod
*
* @param string nam // methodName
*
* @return void
**/
setMethod : function(nam)
{
XMLHttpRequest.prototype[nam] = function()
{
var args = new Array(arguments.length);
for(var i = 0;i < args.length;i++)
args[i] = 'args_' + i;
return Function(args.join(','),'return this.nativeObject.' + nam + '(' + args.join(',') + ')').apply(this,arguments);
};
},
/**
* getClient
*
* @param string mod // methodMode
* @param string adr // targetAddress
*
* @return HttpRequestObject
**/
getClient : function(mod,adr)
{
var cli = null;
try
{
cli = new XMLHttpRequest();
}
catch(e)
{
cli = null;
}
if(cli != null)
{
cli.open(mod,adr);
cli.setRequestHeader('content-type','application/x-www-form-urlencoded; charset=UTF-8');
cli.callbacks = {'unknown' : HttpRequestUtils.isUnknown};
cli.onreadystatechange = function()
{
if(cli.readyState == 4)
{
var res = {'txt' : cli.responseText,'xml' : cli.responseXML};
try
{
cli.callbacks[cli.status.toString()](res);
}
catch(e)
{
cli.callbacks['unknown'](res);
}
}
}
}
return cli;
},
/**
* encodeString
*
* @param array val
*
* @return string
**/
encodeString : function(val)
{
var arr = new Array();
for(k in val)
arr.push(k + '=' + encodeURIComponent(val[k]));
return arr.join('&');
},
/**
* parseJson
*
* @param string txt
*
* @return object
**/
parseJson : function(txt)
{
return eval('(' + txt + ')');
},
/**
* isUnknown
*
* @param array res {'txt','xml'}
*
* @return void
**/
isUnknown : function(res)
{
}
};
window.onload = HttpRequestUtils.init;
こんなになっちゃったにう(´ω`;【壁
IE6までのActiveXおぶじぇくとはしすてむ依存の謎おぶじぇくと(typeofでぷろぱてぃたいぷを調べるとunknownになる)
ってことでほとんどの値にぷろてくとがかかっててjavascriptからじゃ操作できないし
IE7ならXMLHttpRequestおぶじぇくとが使えるんだけど・・・
根本はあんまり変わってないみたいでXMLHttpRequestにprototype指定しようとすると怒られちゃう
ってjavascriptのでばっぐが難しいIEに限って問題がいっぱいだったにう(つx;【みかん
いちおういんすたんすを生成してからはちゃんとjavascriptで操作できるようになってたから
らっぱを創るまでもないかなぁ?ってことでclientを生成するときにぺったんするってことで・・・
<script type="javascript" src="すくりぷと.js">
こんなかんじで読み込んで
var cli = HttpRequestUtils.getClient('getかpost','送信先あどれす');
こんなかんじでくらいあんとを生成して
cli.callbacks['200'] = function(res)
{
/*
受け取ったでーたの処理
res.txt でresponseTextが,res.xml でresponseXMLがげっとできて,
HttpRequestUtils.parseJson(res.txt) ってするとJSONでーたもぱーすできる・・・よね?(´ω`;【壁
↑の'200'はHTTPのすて〜たすこ〜どとおんなじなのでこの場合は正常に取得できたときに呼ばれますです☆
'404'にするとよく見るNotFoundのときの処理ができるにう d(・x・。【みかん
でふぉでせっとしてある'unknown'はすて〜たすこ〜どに対する処理がなかったときに呼ばれますです☆
*/
};
こんなかんじででーた受信完了後の処理をせっとしたら
cli.send('HTTP BODY なでーた');
で送信したらあとは待つだけにう?(´ω`。【壁
HTTP BODYで日本語とか記号みたいな変わった文字を使うときは
var arr = {'key1' : value1,'key2' : value2};
cli.send(HttpRequestUtils.encodeString(arr));
こんなかんじで連想配列にで〜たを入れてencodeStringを通すと整形してくれるはずにう d(・x・。【みかん
ちうい点はこのままだとwindow.onloadが他でもせっとされてたときにばってぃんぐしちゃうとこかにゃぁ・・・
ふみゅ・・・
すてきにめも用でもやっぱりこ〜どはいらいと機能ほしいかもにう・・・ (´・ω・`;【壁
こめんと
投稿された内容の著作権はこめんとの投稿者に帰属するっぽいです☆また,現在 IE6 以下で Sleipnir,Lunascape,Donut じゃないゆ〜ざえ〜じぇんとからの描き込みを制限してますです☆
該当しちゃうかたはてきとうにゆ〜ざえ〜じぇんとを偽装しちゃってくださいです(´ω`;【みかん