【info】有料サポート(ベータ)限定 承り中 /【JSサポート(仮称)】
【費用】 とりあえず、言い値で承ります。ただし、できる範囲での限定受付です。込み具合等によりお受けできない場合がありますのであらかじめご了承ください。サポートにご納得いただけなければ料金は不要です。 逆に感動したら多くても構いません(^^;;;。
【できること】 たとえば、かも日記で無料配布されているコードのカスタマイズや、あるいは、JavaScript/Ajax全般+Webサーバーとの連携などのアドバイス&サンプル作成等 。A:jQchartなどでWeb用グラフ設置(エクセル→CSVやデータベースからWebグラフ生成)などのアドバイスやカスタマイズサンプル作成。B:ツリーメニューなどのカスタマイズサンプル。C:Google Mapsのカスタマイズ。etc...
【できないこと】 腕立て伏せ200回
【ライセンス】 私が今まで「かも日記」等で提供してきたコードの大半は、商用利用、改造、自由、連絡不要で、今後もそれらは変わりません。そして、この有料サポートによりカスタマイズコードなどが提供される場合でも、同様に、それらを商用利用しても改造しても自由です。ただし、制限のきついライブラリなどを使う場合は、各ライブラリのライセンスに準拠せざるを得ない場合があります。
【info】いつもいろいろなテストなどをページ内のあちこちでやっているので、重かったり、壊れていたりするf^^;ことも多いですが、何卒、ご了承ください ( _ _ b
//=====================================================================
// ライブラリ互換処理
// jslb_ajax.jsのsendRequest、prototype.jsのAjax.Request、
// YUIのConnect.asyncRequest、Dojoのdojo.io.bindを互換させます。
// 使わないライブラリは、実装現場で最後に
// case 'ライブラリ名':から;break;までの該当するブロックを削除
// することで、このソースの軽量化が可能です。
//
use : '',//使用するライブラリ名
//使用するライブラリ名を指定します。
setUse :function(libName){
this.use=(libName=='auto')?this._autoUse():((libName)?libName:'');
},
//setUseの第一引数が'auto'時に、下記配列順に検査しライブラリを自動指定します。
_autoUse :function(){
var lib=['prototype.js','yahoo.js','dojo.js','jslb_ajax.js'];
var liboj=[window.Prototype,window.YAHOO,window.dojo,window.sendRequest];
for(var i=0;i<=liboj.length;i++){
var t=typeof liboj[i];
if(t=='object'||t=='function'){return this.use=lib[i];};
};
},
//置き換え
_sendRequest :function(callback,data,method,url,async,sload){
function mkPrams(b){
var p='';
for(var i in b){
p+='&'+encodeURIComponent(i)+'='+encodeURIComponent(b[i]);
};
return p
};
switch(this.use){
case 'prototype.js':
var op={
method:method,
parameters:mkPrams(data),
onComplete:callback,
asynchronous:async
};
url=(sload)?url+'?'+(new Date()):url;
return new Ajax.Request(url,op);
;break;
case 'dojo.js':
dojo.require("dojo.io.*");
var postContent=''
url=(sload)?url+'?'+(new Date()):url;
if(method.toLowerCase()=='get')url+mkPrams(data)
else postContent=mkPrams(data);
dojo.io.bind({
method:method,
url:url,
load: function(type,data){
callback({responseText:data})
},
sync:async,
postContent:postContent
});
;break;
case 'yahoo.js':
var postData='';
url=(sload)?url+'?'+(new Date()):url;
if(method.toLowerCase()=='get')url+mkPrams(data)
else postData=mkPrams(data);
YAHOO.util.Connect.asyncRequest(
method,url,{success:this.onloaded},postData
)
;break;
case 'jslb_ajax.js':
sendRequest(callback,data,method,url,async,sload);
;break;
}
}
| win | mac | linux | |||||||||
| n7 | m1 | e6 | o7 | o8 | n7 | m1 | e5 | s1 | n7 | m1 | k3 |
| ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| win | mac | linux | |||||||||||
| n7 | m1 | e6 | o7 | o8+ | n7 | m1 | e5 | s1.24+ | o8+ | n7 | m1 | k3.3+ | o8+ |
| ○ | ○ | ○ | × | ○ | ○ | ○ | × | ○ | ○ | ○ | ○ | ○ | ○ |
//==============================================================================
// SYSTEM : 暫定版クロスブラウザAjax用ライブラリ
// PROGRAM : XMLHttpRequestによる送受信を行います
// FILE NAME : jslb_ajaxXXX.js
// CALL FROM : Ajax クライアント
// AUTHER : Toshirou Takahashi http://jsgt.org/mt/01/
// SUPPORT URL : http://jsgt.org/mt/archives/01/000409.html
// CREATE : 2005.6.26
// UPDATE : v0.515 2007.10.24 uriEncodeの&処理を修正他コード整理。
// UPDATE : v0.514 2007.10.04 強制ロードを修正 わずかに軽量化。
// UPDATE : v0.513 2007.10.03 callback_onloadの後にabortを追記。
// UPDATE : v0.512 2007.03.31 Safari2.0.4(419)のUA記述にも対処。
// UPDATE : v0.511 2006.12.11 Safari2.04(418.9.1)のUA記述に対処。
// UPDATE : v0.51 2006.11.15 .READMEを外へ移動しsendRequest実行前可視化。
// UPDATE : v0.51 2006.11.15 内部のクオートをシングルに統一。
// UPDATE : v0.50 2006.02.17 sendRequest.prototype.READMEを追加。
// UPDATE : v0.50 2006.02.17 Win e7ネイティブXMLHttpRequest対応 。
// UPDATE : v0.50 2006.02.17 引数dataにobject,array指定も追加 。
// UPDATE : v0.39 2005.11.17 引数colbackにobject,array指定も追加。
// UPDATE : v0.38 2005.10.18 chkAjaBrowser()を追加
// UPDATE : v0.372 2005.10.14 uriEncodeを修正
// UPDATE : v0.371 2005.10.7 GETとsload時の?の付け方を修正。
// UPDATE : v0.37 2005.10.5.1 修正BSDライセンスやめました。
// 著作権表示義務無し。商用利用、改造、自由。連絡不要です。
// UPDATE : v0.37 2005.10.5 リクエストヘッダenctypeのセット方法等を変更
// setEncHeader、uriEncodeを追加
// @see http://jsgt.org/ajax/ref/test/enctype/test1.htm
// 修正BSDライセンスにしました
// UPDATE : v0.36 2005.7.20 (oj.setRequestHeader)がwinieでunknown
// を返すことが判明し修正(unknownなのに、動作はします)
// UPDATE : v0.35 2005.7.19 POSTのContent-Type設定をOpera8.01対応
// UPDATE : v0.34 2005.7.16 sendRequest()にuser,password引数を追加
// UPDATE : v0.33 2005.7.3 Query Component(GET)の&と=以外を
// encodeURIComponentで完全エスケープ。
// TEST-URL : ヘッダ http://jsgt.org/ajax/ref/lib/test_head.htm
// TEST-URL : 認証 http://jsgt.org/mt/archives/01/000428.html
// TEST-URL : 非同期
// http://allabout.co.jp/career/javascript/closeup/CU20050615A/index.htm
// TEST-URL : SQL http://jsgt.org/mt/archives/01/000392.html
//------------------------------------------------------------------------------
// 最新情報 : http://jsgt.org/mt/archives/01/000409.html
// 著作権表示義務無し。商用利用、改造、自由。連絡不要。
//
//
////
// 動作可能なブラウザ判定
//
// @sample if(chkAjaBrowser()){ location.href='nonajax.htm' }
// @sample oj = new chkAjaBrowser();if(oj.bw.safari){ /* Safari code */ }
// @return ライブラリが動作可能なブラウザだけtrue true|false
//
// Enable list (v038現在)
// WinIE 5.5+
// Konqueror 3.3+
// AppleWebKit系(Safari,OmniWeb,Shiira) 124+
// Mozilla系(Firefox,Netscape,Galeon,Epiphany,K-Meleon,Sylera) 20011128+
// Opera 8+
//
function chkAjaBrowser()
{
var a,ua = navigator.userAgent;
this.bw= {
safari : ((a=ua.split('AppleWebKit/')[1])?a.split('(')[0].split('.')[0]:0)>=124 ,
konqueror : ((a=ua.split('Konqueror/')[1])?a.split(';')[0]:0)>=3.3 ,
mozes : ((a=ua.split('Gecko/')[1])?a.split(' ')[0]:0) >= 20011128 ,
opera : (!!window.opera) && ((typeof XMLHttpRequest)=='function') ,
msie : (!!window.ActiveXObject)?(!!createHttpRequest()):false
}
return (this.bw.safari||this.bw.konqueror||this.bw.mozes||this.bw.opera||this.bw.msie)
}
////
// XMLHttpRequestオブジェクト生成
//
// @sample oj = createHttpRequest()
// @return XMLHttpRequestオブジェクト(インスタンス)
//
function createHttpRequest()
{
if(window.XMLHttpRequest){
//Win Mac Linux m1,f1,o8 Mac s1 Linux k3 & Win e7用
return new XMLHttpRequest() ;
} else if(window.ActiveXObject){
//Win e4,e5,e6用
try {
return new ActiveXObject('Msxml2.XMLHTTP') ;
} catch (e) {
try {
return new ActiveXObject('Microsoft.XMLHTTP') ;
} catch (e2) {
return null ;
}
}
} else {
return null ;
}
}
////
// 送受信関数
//
// @sample sendRequest(onloaded,'&prog=1','POST','./about2.php',true,true)
// @sample sendRequest(onloaded,{name:taro,id:123,sel:1},','POST','./about3.php',true,true)
// @sample sendRequest({onload:loaded,onbeforsetheader:sethead},'',','POST','./about3.php',true,true)
// @param {string} callback 受信時に起動する関数名
// @param {object} callback 受信時に起動する関数名とヘッダ指定関数名{onload:関数名,onbeforsetheader:関数名}
// @param {array} callback 受信時に起動する関数名とヘッダ指定 ary['onload']=関数名;ary['onbeforsetheader']=関数名
// @see http://jsgt.org/ajax/ref/head_test/header/Range/004/sample.htm
// @param {string} data 送信するデータ stringの場合(&名前1=値1&名前2=値2...)
// @param {object} data 送信するデータ objectの場合{名前1:値1,名前2:値2,...}
// @param {array} data 送信するデータ arrayの場合は連想配列 ary['名前1']=値1;ary['名前2']=値2
// @param {string}method 'POST' or 'GET'
// @param {string}url リクエストするファイルのURL
// @param {string}async 非同期ならtrue 同期ならfalse
// @param {string}sload スーパーロード trueで強制、省略またはfalseでデフォルト
// @param {string}user 認証ページ用ユーザー名
// @param {string}password 認証ページ用パスワード
//
sendRequest.README = {
url : 'http://jsgt.org/ajax/ref/lib/ref.htm',
name : 'sendRequest',
version : 0.514,
license : 'Public Domain',
author : 'Toshiro Takahashi http://jsgt.org/mt/01/',memo:''
};
function sendRequest(callback,data,method,url,async,sload,user,password)
{
var GET=method.toUpperCase()=='GET',
oj = createHttpRequest();
if( oj == null ) return null;
//強制ロードの設定
if((sload)?sload:false)url +=((url.indexOf('?')==-1)?'?':'&')+'t='+(new Date()).getTime();
//ブラウザ判定
var bwoj = new chkAjaBrowser(),
o = bwoj.bw.opera,
s = bwoj.bw.safari,
k = bwoj.bw.konqueror,
m = bwoj.bw.mozes ;
//callbackを分解
//{onload:xxxx,onbeforsetheader:xxx}
if(typeof callback=='object'){
var callback_onload = callback.onload;
var callback_onbeforsetheader = callback.onbeforsetheader;
} else {
var callback_onload = callback;
var callback_onbeforsetheader = null;
}
//受信処理
//operaはonreadystatechangeに多重レスバグがあるのでonloadが安全
//Moz,FireFoxはoj.readyState==3でも受信するので通常はonloadが安全
//Win ieではonloadは動作しない
//Konquerorはonloadが不安定
//参考http://jsgt.org/ajax/ref/test/response/responsetext/try1.php
if(o || s || m){
oj.onload = function () { callback_onload(oj);oj.abort(); }
} else {
oj.onreadystatechange =function ()
{
if ( oj.readyState == 4 ){
//alert(oj.status+'--'+oj.getAllResponseHeaders());
callback_onload(oj);oj.abort();
}
}
}
//URLエンコード
data = uriEncode(data,url);
if(GET) {
url += ((url.indexOf('?')==-1)?'?':'')+data;
}
//open メソッド
oj.open(method,url,async,user,password);
//リクエストヘッダカスタマイズ用コールバック
//使う場合は、呼び出しHTML側のwindow直下へグローバルな関数setHeadersを
//記述し、その中でsetRequestHeader()をセットしてください
//@sample function setHeaders(oj){oj.setRequestHeader('Content-Type',contentTypeUrlenc)}
//
if(!!callback_onbeforsetheader)callback_onbeforsetheader(oj);
//デフォルトヘッダapplication/x-www-form-urlencodedセット
setEncHeader(oj);
//デバック
//alert('////jslb_ajaxxx.js//// \n data:'+data+' \n method:'+method+' \n url:'+url+' \n async:'+async);
//send メソッド
oj.send(data);
//URIエンコードヘッダセット
function setEncHeader(oj){
//ヘッダapplication/x-www-form-urlencodedセット
// @see http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/interact/forms.html#h-17.13.3
// @see #h-17.3
// ( enctype のデフォルト値は 'application/x-www-form-urlencoded')
// h-17.3により、POST/GET問わず設定
// POSTで'multipart/form-data'を指定する必要がある場合はカスタマイズしてください。
//
// このメソッドがWin Opera8.0でエラーになったので分岐(8.01はOK)
if(!o||typeof oj.setRequestHeader == 'function'){
oj.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
}
return oj
}
//URLエンコード
//引数dataは、stringかobjectで渡せます
function uriEncode(data,url){
var d = [];
if(typeof data=='object'){
for(var i in data)p(i,data[i]);
} else if(typeof data=='string'){
if(data=='')return '';
//&と=で一旦分解しencode
if(data.charAt(0)=='&')data=data.substring(1,data.length)
var datas = data.split('&');
for(var i=0;i<datas.length;i++)
{
var dataq = datas[i].split('=');
p(dataq[0],dataq[1]);
}
}
function p(k,v){d.push( encodeURIComponent(k) + "=" + encodeURIComponent(v))};
return d.join("&");
}
return oj
}
application/x-www-form-urlencoded
の入れ方について確認中、037で修正予定です。
http://jsgt.org/ajax/ref/test/enctype/test1.htm
HTTPのリクエストヘッダを、好きな時に、setRequestHeaders()で、open()とsend()の間に挿入するための簡単な仕掛けを、v039で入れたいと思っています。
高橋 ( 2005年12月08日 16:57 ) ukky さんありがとうございます。
でも、その症状が確認できませんでした、、、。もし、お差支えなければ、全体はどんなコードかわかるとありがたいのですが、、、。
OS windowsXP
MSIE6.0
jslb_ajax038.js
MSIEではエラーが表示され動きません。
行156
構文が無効です。
行156あたりはoj.send(data);かfunction setEncHeader(oj)の付近だと思いますが、
もし、わかればありがたいのですけれど、
sendRequest(callback,data,method,url,async,sload,user,password)
のdataとmethodは、どう書いていたかわかりますか?
>入門Ajaxさん
私の場合65行目のcatchの部分で構文エラーが出ました(IE6.0)。
しかしそれはiframe内のソースでライブラリを外部インクルードした場合、というかなり特殊なケースでのみ発生しました。
iframeは使わざるを得ないので、外部JavascriptではなくHTMLに直接ライブラリをまんま記述したところエラーは出なくなりました。
IEのバグでしょうか。
入門Ajaxの58ページにmcharset属性の指定が必須とありますが、mcharsetはどこに指定したら良いのでしょうか。ネット内を探しましたがわかりませんでした。ご指導いただければ幸いです。
※もしかして、javascriptのcharsetの事でしょうか?
ああ、すみません。それは、charsetの間違いですね。ありがとうございます。
color99 ( 2006年04月19日 00:39 )javascriptからhttpで送るデータに半角の&又は=が含まれているとそれを含む以降の文字が送れないみたいです。
これはこのライブラリの現在の仕様の様に思いますが、送れる様には出来ないでしょうか?
jslb_ajax050.js
を使うと、データをオブジェクトで{名前1:値1,名前2:値2,...}のようにして送ることができます。
http://jsgt.org/ajax/ref/lib/ref.htm
例
sendRequest(onloaded,{data1:123 , data2: "aaaa", data3:"test" },'GET','./test.txt')
これはどうですか?
http://jsgt.org/ajax/newmon/samples/chapter05/05-01-01/sample2.htm
ありがとうございます。
ご紹介いただいたのは、本には書かれていないサンプルですね。
なるほど2重にエンコードとデコードすればいいのですか。
参考にして検討してみます。
mobtさん、ご報告有り難うございます。
こちらでも、試しに、明示的に050.jpを指定してみましたが、一応動いてるみたいです。
http://jsgt.org/ajax/newmon/samples/chapter04/04-01-01/sample_50.htm
そちらでは、どうでしょうか?ご確認いただけますか?
ダウンロードした入門Ajaxのサンプルソースですが、
chapter07\07-01-02\sample.htm のXML読み込みが
IE6.0(SP2)/WinXP Proで動作しません。IEのデバッグ表示は有効にしておりますが、特にエラー等は表示されていません。 item.length に 0が返ってしまいます。
ちなみに、FireFox1.5.04では正常に動作します(item.lengthは2が入ります)
ijtaさんこんばんは。
http://jsgt.org/ajax/newmon/samples/chapter07/07-01-02/sample.htm
これは、動作しますか?
ijta ( 2006年07月07日 16:49 )高橋さん:
はい、こちらは同じブラウザ問題なく動作します。
もしかして、Webサーバー側の無い、ローカルで試している?ということは無いですか?
MASA ( 2006年07月28日 22:14 )OS windowsXP
MSIE6.0
jslb_ajax050.js
上記環境では行23とやらでエラーが出て動かないで
すよ(オブジェクトでサポートされていないプロパティま
たはメソッドです)。
本当に動作確認されていらっしゃるのですか?
jslb_ajax050.jsが行23でエラーを出すことは無いと思います。そのあたりはコメントですから。そのエラーを検証できるURLを教えていただけると、何かわかるかもしれません。
修行中 ( 2006年10月24日 13:48 )sendRequest()の引数、dataについて質問させてください。
指定方法にObject、配列、文字列とあるのは理解できるのですが、左辺に同じ名前で複数個セットして、サーバーでは配列の状態で値を受け取りたいと考えているのですが、記述方法に悩んでいます。右辺には"="や"&"が入ってしまうため、文字列で送ることができません。
どうかご指南お願いいたします。
修行中 ( 2006年10月24日 16:00 )書き忘れました。
dataの部分は動的に生成したいと思っています。
左辺と右辺の具体例をいただけますか?
ちなみに、「サーバーでは配列の状態で値を受け取りたい」との件ですが、
sendRequestでは、data部分を配列、oj、文字列いずれで書いても送信はHTTPプロトコルのGET/POSTで送られますから、サーバー側では&name=valueを分解してから受け取る形になります。
もしかして、このvalueを['a','b','c']や{"a":123}のようにしたいということでしょうか?
Haruka ( 2006年11月14日 04:08 )jslb_ajax050_c.jsを使用させていただいています。
コード中の文字列の表記にダブルクォートとシングルクォートの両方の表記を用いていらっしゃいますが、可能であればシングルクォートだけに統一していただけるとありがたいです。
include = "/*jslb_ajax050 2.652k.....;return oj}";
としておき、
eval(include);
や
document.write(include);
の、ような使いかたができますので。
ご検討いただければ幸いです。
Haruka さん。ナイスアイディアですね。さっそく作らせていただきました。
Haruka ( 2006年11月16日 02:36 )早速の対応ありがとうございます。つまらない案を採用していただき感動してます!!
miz ( 2006年11月24日 17:40 )有用なスクリプトを有り難う御座います。重宝して使わせて頂いています。
ずっとversion4を利用していたのですが、最近opera9を使い始めてRequestHeaderを指定しないとうまくデータを受け取れないことに気づいて、自力で、operaのversionチェックを追加しておりました。
たまたま、こちらへ再度見に来て、operaのversion up対応されていることを知りました。
で、opera判定してから
if(typeof oj.setRequestHeader) == 'function')
の分岐をしていて、こんな方法も有ったかと感心したのですが、
それじゃあ、ここはブラウザ判定しないでも、この判定だけで十分かなとも思いました。
僭越かとも思いましたが、意見を述べさせて頂きました。
そうです。opera分岐は、他に1箇所で使っているだけなので、あんまり役に立っていません(笑)。作ったときは、たぶん、Operaは、今後もっと分岐して面倒を見ないといけないはずだ、と読んでいたのですが、今も案外まともに高速で動いていますね(^^;
oku ( 2006年12月11日 00:51 )はじめまして、okuと申します。
Safariのバージョンを2.0.4に上げたとたん、Browser分岐が
Ajax非動作ブラウザとして認識されるようになりました。
『入門 Ajax』のサポートページも閲覧出来ない状態にあります。
ご報告まで。
oku さんありがとうございます。対処したv0.511をリリースしました。
新しいSafariのWebkitバージョン番号が数値の文字列ではなく、コンマを複数つなぐ形式になっていたのが原因でした。これが仕様なのかもしれません。うーん、予想失敗。最初から文字列として扱っていればよかったです。
puyo ( 2007年02月07日 22:22 )ブラウザのキャッシュ対策でhttp://blog.dtpwiki.jp/dtp/2007/02/ieajaxie_aa84.html
という記事がありました。
v0.511現在だと「ユニークIDを付加する方法」動作のようですが、「If-Modified-Sinceヘッダを用いる方法」をデフォルトにできないでしょうか?
puyoさん今晩は。getのユニークIDで強制ロードを行う方法は、確かに強引なワザですので実装する際には結構悩みました。
確かに、setHeadでやる方が正しいと思います。
ただ、当時、いろいろなブラウザを試験してみて「絶対確実に強制ロードできる」と言う点で、ヘッダの指定よりも優れていたので選択し、一応、true|falseでユーザーが選べるようにしてはあります。
でも、最近は調べていませんので、この機会にもう一度テストして、もし行けそうなら再度試してみたいと思います。
まだ、チェックしていませんが、リクエストヘッダをセットするなら自力でもたとえば、次のような書き方があります。
sendRequest({
onload : on_loaded1,
onbeforsetheader : function(oj){
oj.setRequestHeader('Cache-Control','no-cache');
oj.setRequestHeader('Pragma','no-cache');
oj.setRequestHeader ('Expires', 0);
}
},'',GET,URL,true,false);
ちょっと試してみました。。。IEで確実とはいえない気もしますが、でも、デフォルトでどうするかなども、もう少し考えてみる必要があるかもしれません。。。
高橋 ( 2007年02月08日 02:12 )試したURLです。511で試しました。
http://jsgt.org/lib/ajax/051/jslb_ajax0511_test.htm
ご返答ありがとうございます。
手元に"http://ドメイン/?t=〜" が表示できないHTTPデーモンがあったので、あまり考えずにヘッダの方がいいかなと考えていました。
ライブラリとしては「確実な動作」も重要ですので、こちらでも動作検証しつつ setRequestHeader という方向で使わせて頂きます。
oku ( 2007年03月16日 03:42 )お久しぶりです、okuと申します。
MacOSを10.4.9、Safariのバージョンを2.0.4(419.3)に上げたとたん、Browser分岐が
Ajax非動作ブラウザとして認識されるようになりました。
『入門 Ajax』のサポートページも閲覧出来ない状態にあります。
おそらく前回と同様な問題が起きているのではないかな?と思いました。
oku さんいつもありがとうございます。遅くなってすみませんでした。512を作りました。
SafariのUA表記ルールが見当たらなかったので、相手の出方次第、ということで、つらいところですが、今度こそしばらく大丈夫かも??
Zen ( 2007年04月23日 04:56 )http://jsgt.org/ajax2/ を昨日購入したのですが、すみません、これ chapter01 から chapter03 で紹介されているソースコードはどこに置いてあるんですかね?
もしかして公開されてません? タイプしてコピーするのは面倒なので、本の "サポート" としてあると助かります。
Zenさんありがとうございます
http://jsgt.org/ajax2/
の左側にあるリンク「ダウンロード[サンプルコード一式(PHP,Perl,SQLiteDB等含む)] 」をクリックしてみてください。
一応パスワードが必要ですので、お手数ですが、本書の「はじめに」か「奥付」を見てください。
高橋 ( 2007年04月24日 13:27 )あ、勘違いしました。すみません「chapter01 から chapter03」ですか。そこは、ほとんど記事や解説ですので特にダウンロードサンプルとしてはまとめていないんです。ごめんなさい。
Zen ( 2007年04月24日 13:41 )コメントありがとうございます。本自体は楽しくてもう既に読み終えてしまいました。
> ... の左側にあるリンク「ダウンロード[サンプルコード一式(PHP,Perl,SQLiteDB等含む)] 」 ...
あっ、それは知ってました。 私が知りたかったのは、 ajax2\newmon\samples 以下には chapter04-12 しかなくて、 chapter01、 chapter02、 そして chapter03 のソースコードは含まれていなかった為、それらのコードは公開されているのか、といったことでした。
私が探し足りていないだけでしょうか、それとも単にソースコードが公開されていないのでしょうか?
te ( 2007年10月03日 12:12 )タスクマネージャの「プロセス」「ハンドル(表示メニューから列選択)」がsendRequestを呼び出す毎に増えてゆく現象で困っています。OSは2000,XPでも同じです。jslb_ajax0512.jsを使用しています。oj.open(method,...直後に増えていることを確認しています。
最初はハンドルは数百ですが、1回の呼び出しで数個づつ増えてそのうち数万になり、リソース不足でハングアップします。同様のロジックででprototype.jsのAjAXを呼び出した場合はハンドル増加は認められません。
回避方法等教えてください。
テストまでしていただきありがとうございます。
とりあえず、下記のようにoj.abort();を2か所追記していただけますか?これで直ると思いますが、いかがでしょうか? 後日、v0513を作ります。
if(opera || safari || mozes){
oj.onload = function () { callback_onload(oj);oj.abort(); }
} else {
oj.onreadystatechange =function ()
{
if ( oj.readyState == 4 ){
//alert(oj.status+'--'+oj.getAllResponseHeaders());
callback_onload(oj);oj.abort();
}
}
}
こんなに早く回答いただけると思っていませんでした。
ハンドルの増加は直りました。使わせていただきます。
ありがとうございました。
jslb_ajax0514_c.jsを使用させていただいてます。
sendRequest(onloaded,{data1:123 , data2:"aaa", data3:"test" },'POST','./test.txt')}
のようにコーディングしているのですが、data1の値が送られません。
dataの部分を '&data1=123&data2=・・・'としても同様でした。
お忙しいところ大変恐縮ですが、コード記述ミスなど、ご教授頂きたいと思っております。
こんにちは。
クオートとダブルクオートが混在していますが、そこはそのままですか?こちらでは、そこを修正して試してみましたが特に問題は無いようでした。
どうでしょうか?
su- ( 2007年10月24日 14:13 )とっても早くお返事頂きまして、ありがとうございます!
混在している件は大丈夫です。
ダブルクオートはなしです。まぎらわしくてすみません。
methodに 'POST' を指定しているのでsend()でデータを送っていると思うのですが、
そのデータの先頭に '&' が付いているような気がします。
間違っていたら申し訳ありません。
それとも、受信側に問題があるのでしょうか?
サーバー側はASPで組んでいます。
すみません。エンコード処理の部分で、POSTに無駄な&が付いていますね。こちらのサーバーは許してくれているのですが、甘いということですねf^^;;。ちょっと修正してみました。
http://jsgt.org/lib/ajax/051/jslb_ajax0515b1.js
テスト
http://jsgt.org/lib/ajax/051/test/jslb_ajax0515b1.htm
お手数おかけしますが、いかがでしょうか?
su- ( 2007年10月24日 17:00 )修正していただいたライブラリで上手くいきました!
teさんもおっしゃっているように、
こんなに早く回答いただけるなんて、本当に助かります。
お忙しい中、いろいろとありがとうございました。
このライブラリをShift_JIS環境のPHPと一緒に使いたいのですが、変更する点はの部分のcharsetのみでよいのでしょうか?
PHP側のmb_http_output関数の引数はどうすればいいのでしょうか?
ページのcharsetがShift_JISなら、mb_http_output("SJIS"); で良いと思います。
さらに、ライブラリ自体もShift_JISで保存した上で、<script src = "./jslb_ajax.js" charset= "Shift_JIS"></script>で読み込むと安全かなと。
あと、コードの中のoj.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8')は、そのままで良いと思います。
itn ( 2008年01月20日 16:49 )使わせていただいておりますが、OP、FF、IE6では正常に動作していますが、なぜかIE7だと
ライン:183
文字:3
アクセスが拒否されました。
とエラーが出てしまいます。
高橋 ( 2008年01月20日 18:50 )itnさんこんにちは。今IE7 v7.0.6 でアクセスしてみていますが、問題を見つけられませんでした。
そのエラーの出ているサイトは見れますか?
itn ( 2008年01月20日 20:11 )ローカルでサンプルを動かしてみた時にこの症状になりました。
開くことは出来ますがステータスバーに警告アイコンが出てjavascriptが一切停止してしまいます。
Webサーバー(httpd)は動いていますか?AjaxのXMLHttpRequestは、原則HTTP通信なのでローカルではWebサーバーがないと動かないのが正常?だったりもします。
itn ( 2008年01月21日 15:26 )そうなのですか。
簡単に試せないので不便に感じます。
ありがとうございました。
v0.515でsendRequest(onRet, '&a=1&b=2&c&3', 'GET', 'test.html', true, true);と指定した場合、&a=1の値(最初の変数)がtest.htmlに送られていないようですが...(二番目の変数以降(&b=2&c&3)はうまくGETできました)
高橋 ( 2008年02月05日 15:08 )らるさんこんにちは。
下記でのテストでは送られているようなのですが、何か違いがありますか?
http://jsgt.org/lib/ajax/051/test/jslb_ajax0515.htm
http://jsgt.org/lib/ajax/051/test/jslb_ajax0515_c.htm
uriEncode()関数内で、dataの先頭の"&"を取り外した後、returnするときに結合していないようです。
(先頭以外の"&"は大丈夫)
使用しているのは v0.515 になります。
高橋 ( 2008年03月03日 00:18 )上原さんありがとうございます。GETでの強制ロード時に、最初の&が欠落してtと結合してしまいますね。うう。
v0.5.6をリリースしました。
高橋 ( 2008年03月03日 00:20 )念のためにテスト
http://jsgt.org/lib/ajax/051/test/jslb_ajax0516.htm
【info】有料サポート(ベータ)限定 承り中 /【JSサポート(仮称)】
【費用】 とりあえず、言い値で承ります。ただし、できる範囲での限定受付です。込み具合等によりお受けできない場合がありますのであらかじめご了承ください。サポートにご納得いただけなければ料金は不要です。 逆に感動したら多くても構いません(^^;;;。
【できること】 たとえば、かも日記で無料配布されているコードのカスタマイズや、あるいは、JavaScript/Ajax全般+Webサーバーとの連携などのアドバイス&サンプル作成等 。A:jQchartなどでWeb用グラフ設置(エクセル→CSVやデータベースからWebグラフ生成)などのアドバイスやカスタマイズサンプル作成。B:ツリーメニューなどのカスタマイズサンプル。C:Google Mapsのカスタマイズ。etc...
【できないこと】 腕立て伏せ200回
【ライセンス】 私が今まで「かも日記」等で提供してきたコードの大半は、商用利用、改造、自由、連絡不要で、今後もそれらは変わりません。そして、この有料サポートによりカスタマイズコードなどが提供される場合でも、同様に、それらを商用利用しても改造しても自由です。ただし、制限のきついライブラリなどを使う場合は、各ライブラリのライセンスに準拠せざるを得ない場合があります。
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 |