HTML記述
<script type="text/javascript" src="template.js"></script>
を記述し、template.jsを読み込んでください。
Templateというオブジェクトを生成しますので、以降、このオブジェクトのメソッドを使用してテンプレートファイルにアクセスしてください。
Template.Load(files, option)
テンプレートファイルをロードします。
---- 引数 ----
- files (Object)
-
{ID1: ファイル1, ID2: ファイル2 [, ...] }
このIDはテンプレートからHTMLやDOMノードツリーを作成するときに参照します。
Load()関数は何度でも呼び出せますが、IDは共有されます。
同じIDが指定された場合は上書きされます。 - option (Object)
-
{method: (String), postData: (String||Object), user: (String), password: (String), enctype: (String), encoded: (Boolean), headers: (Object), onload: (Function), onsuccess: (Object), slt: (Object)}
サーバーに送信するデータ、および受信後の動作指示-
{id1: callback, id2: callback, id3: callback [, ...]}
第1引数のIDに対応するコールバック関数。
それぞれのファイルの読み込み完了時に呼び出されます。 - method: (String)
- 送信メソッド。"GET"または"POST"
- postData (String, Object)
- サーバーに送信するデータ
Objectが渡された場合は、そのプロパティと値を組にして送信します。 - encoded (Boolean , default:true)
- 送信データがURIエンコードされているか
falseが指定されるとencodeURIComponentを使用してエンコードします。 - enctype (String , default:"applecation/x-www-form-urlencoded")
- 送信データ種別
"application/x-www-form-urlencoded"をサポート - user: (String)
- Authroizationが必要なページで使用するユーザー名
- password: (String)
- Authroizationが必要なページで使用するパスワード
- headers: (Object)
- RequestHeader
- onload: (Function) (未実装)
- Template.Load()が呼び出されたときの第一引数のセットを1つのグループとして、
全てのファイルを読み終えた後に実行されるコールバック関数です。
エラーがあった場合でも呼び出されます。 - onsuccess: (Function) (未実装)
{id1: (Function), id2: (Function) [, ...]}
- 指定したIDのファイルが読み終わると実行されるコールバック関数です。
- slt: (Object) (未実装)
{id1: URI, id2: URI [, ...]}
XMLファイルに適用するXSLファイル。
第1引数のIDとは関係ありません。
XSLファイルを使用するにはTemplate.GETXML()関数を使用してください。
-
---- サンプル ----
Template.Load( { id: 'uri' ,id2:'tpldetail.txt' ,id3:'tpldetail2.tpl' ,id4:'tpldetail2.xml' } , { onsuccess:callback // default: null } );
Template.GetHTML(ID, data)
戻り値は通常の文字列です。
Template.Load()で指定されていないIDが指定された場合、
またはTemplate.Load()に失敗したファイルのIDが指定された場合は空文字列が返されます。
---- 引数 ----
- ID (String)
- Template.Load()の第一引数のIDに対応。
- data (Object)
{var: value [, ...] } | {wrapper: [{var: value [, ...] } ]}
テンプレートの{tpl:var}に適用するデータ
---- サンプル ----
document.getElementById('docid').innerHTML = Template.GetHTML('id', {name:'Joe',age:33});
---- Appendex.A ----
1つのテンプレートで完結しない場合は、1回ずつinnerHTMLに代入するのではなく、
先に必要なテンプレートを全て読み込んでから、まとめてinnerHTMLに容れてください。
head.tpl
<div> <h1>User Names</h1> </div> <table> <--- 開始タグで終わる
foot.tpl
</table> <- 終了タグから始まる <div> <p>Endof Table</p> </div>
cont.tpl
<tbody>{tpl::contain}</tbody>
script
Template.Load( { head: 'head.tpl' foot: 'foot.tpl' cont: 'cont.tpl' } ); document.getElementById('docid').innerHTML = Template.GetHTML('head') + Template.GetHTML('cont', {contain:'<tr><td>contants</td></tr>'}) + Template.GetHTML('foot');
この形式のテンプレートはTemplate.GetDOM()で取得すると開始タグで終わるエレメントは閉じられます。
終了タグで始まるタグは無視され、テキストノードのみとなります。
---- Appendix.B----
InternetExprorerにおいて、テーブルコンテンツのtbodyやtrだけを挿入する場合など、
innerHTMLを使用できない場合はTemplate.GetDOM()を使用してください。
HTML
<table id="tableid"> <tbody></tbody> </table>
table.tpl
<tr><td>1行1列</td><td>1行2列</td> <tr><td>2行1列</td><td>2行2列</td>
script
domarray = Template.GetHTML(table, data) tbody = document.getElementById('tableid').getElementsByTagName('tbody')[0]; for(var i=0;i<domarray.length;i++){ tbody.appendChild(domarray[i]); }
---- Appendix.C----
テーブルHTMLで、タグの閉じ忘れがある場合、Operaで表示に不具合が出ることがあります。
これはOpera内部でのDOMツリー生成時の問題と思われます。
<table> <tr><td>1行1列<td>1行2列 <tr><td>2行1列<td>2行2列 </table>
Template.GetDOM(ID, data, namespace)
DOMエレメント
戻り値はリスト(配列)となります。
---- 引数 ----
- ID (String)
- Load()の第一引数のIDに対応。
- data (Object)
{var: value [, ...] } | {wrapper: [{var: value [, ...] } ]}
テンプレートの{tpl:var}に適用するデータ- namespace (Boolean||String , Default: true)
- trueが指定されるとXHTMLで作成している場合にhtmlタグのxmlns属性を取得し、DOMエレメント生成時のnamespaceとして使用します。
falseが指定されるとXHTMLの時でもnamespaceは使用しません。
独自のnamespaceを指定するときは、文字列で指定してください。
XHTML1.0、XHTML1.1では xmlns属性は "http://www.w3.org/1999/xhtml" と決まっています。
---- サンプル .1 ----
template.tpl
<h1>{tpl:title}</h1> <p>{tpl:summary}</p>
script
domarray=Template.GetDOM(tplId, {title:'学生簿', summary:'2年1組男子生徒一覧'}); docobj=document.getElementById('doc'); for(var id=0;i<domarray.length;i++){ docobj.appendChild(domarray[i]); }
---- サンプル .2----
template.tpl
{tpl::repeat=students} <tr> <td>{tpl:sid}</td> <td>{tpl:name}</th> </tr> {tpl::endrepeat}
script
data={students:[ {sid:1, name:'Joe'} ,{age:2, name:'Peat'} ]}; domarray=Template.GetDOM(tplId, data); table=document.getElementsByTagName('table')[0]; tbody=table.getElementsByTagName('tbody')[0]; for(var i=0;i<domarray.length;i++){
tbody.appendChild(domobj[i]); }
---- Appendix.A----
戻り値は通常の配列ですので1つめだけを挿入することが決まっている場合は、関数の後ろに [0] を付けることができます。
template.tpl
<div> <h1>{tpl:title}</h1> <p>{tpl:summary}</p> </div>
script
document.getElementById('doc').appendChild( Template.GetDOM(tplId, {title:'学生簿', summary:'2年1組男子生徒一覧'})[0] );
---- Appendix.B----
Safariでは配列に対してfor(var i in domarray)を使うと取得できないことがあります。
for(var i=0;i<domarray.length;i++)など、lengthを調べる形式でループさせることをお薦めします。
---- Appendix.C----
インラインフレームなど、DOMを使用できない場合はTemplate.GetHTML()を使用してください。
Template.GetXML(ID, data, slt);
この機能は現在サポートしていません。
テンプレートファイルはrootとなるノード(タグ)が必須。
XSLの適用はブラウザのXSLTを使用します。
戻り値はXMLエレメントとなります。
---- 引数 ----
- ID (String)
- Template.Load()の第一引数のIDに対応。
- data (Object)
{var: value [, ...] } | {wrapper: [{var: value [, ...] } ]}
テンプレートの{tpl:var}に適用するデータ- slt (String)
- Template.Load()の第3引数のIDに対応。
あらかじめLoad済みのIDに一致するものがなければ、引数をURIとみなしインターネット上から読み込みます。
テンプレートに適用するXLSファイル。
---- サンプル ----
document.getElementById('docid').appendChild = Template.GetXML(tplID, data, xslID);
テンプレートはXMLがベースとなりますので、ルートノードが必須です。
XML宣言は任意ですが、Template.GetHTML()またはTemplate.GetDOM()で使用する場合は、XML宣言もHTMLとして書き出されます。
テンプレートデータの受信時の拡張子、およびMIME-Typeは、プレーンテキスト、HTML、XMLに関するいずれかに対応。
template.tpl
<div> <h1>ヘッダ</h1> <p>コンテンツ</p> </div>
以下のようにルートエレメントがないものはエラーとなります
template.tpl
<h1>ヘッダ</h1> <p>コンテンツ</p>
---- Appendex.A ----
検討中の項目
- Template.Load()が呼び出されたときにsltオプションが指定されていないときはTemplate.GetXML()で必須。
- Template.GetXML()でsltオプションが指定されていないときはTemplate.Load()の時の1つめのsltファイルが使用されます。
- Template.Load()で指定されておらず、Template.GetXML()でも指定されていないときはデフォルトのスタイルが適用されます。
Template.Document(ID, elementID)
この機能は現在サポートしていません。
Template.Load()の代わりにドキュメント内のHTML/XHTML/XMLを読み込み、登録します。
Template.InsertHTML(elementID, ID, Object)
Template.GetHTML()で作成したHTMLを、第一引数で指定したエレメントに入れ換えます。
戻り値は成功時 true、失敗時 false
---- 引数 ----
- element (String || HTML-DOM-Element)
- HTML/XHTMLドキュメント内の要素、またはそのID
- ID (String)
- Template.Load()の第一引数のIDに対応。
- data (Object)
{var: value [, ...] } | {wrapper: [{var: value [, ...] } ]}
テンプレートの{tpl:var}に適用するデータ
---- サンプル .1 ----
Template.InsertHTML('docid', 'tplid', {name:'Joe',age:33});
---- サンプル .2 ----
var elm=document.getElementById('docid'); Template.InsertHTML(elm, 'tplid', {name:'Joe',age:33});
Template.InsertDOM(element, ID, Object, add, namespace)
Template.GetDOM()で作成したDOMエレメントを、第一引数で指定したエレメントに追加、または入れ換えます。
戻り値は成功時 true、失敗時 false
---- 引数 ----
- element (String || HTML-DOM-Element)
- HTML/XHTMLドキュメント内の要素、またはそのID
- ID (String)
- Template.Load()の第一引数のIDに対応。
- data (Object)
{var: value [, ...] } | {wrapper: [{var: value [, ...] } ]}
テンプレートの{tpl:var}に適用するデータ- add (Boolean , Default: false)
- HTMLを追加(true)するか更新(false)するかの指定。
- namespace (Boolean||String , Default: true)
- trueが指定されるとXHTMLで作成している場合にhtmlタグのxmlns属性を取得し、DOMエレメント生成時のnamespaceとして使用します。
falseが指定されるとXHTMLの時でもnamespaceは使用しません。
独自のnamespaceを指定するときは、文字列で指定してください。
DOMエレメント作成時にnamespace付きで作成するようになります。
XHTML1.0、XHTML1.1では xmlns属性は "http://www.w3.org/1999/xhtml" と決まっています。
---- サンプル .1 ----
Template.InsertDOM('docid', 'tplid', {name:'Joe',age:33});
Template.Test(id);
この機能は現在サポートしていません。
Template.Load()で指定されたIDに対応したファイルが正常に読み込めたかどうかをテストします。
- 戻り値
- true : 正常、テンプレートからHTMLの作成が可能
- false : エラー
Template.TestGroup(groupID);
この機能は現在サポートしていません。
Template.Load()で指定された全てのファイルが正常に読み込めたかどうかをテストします。
groupIDはTemplate.Load()が呼び出された順番に、0からの連番になります。
- 戻り値
- true : 全てのファイルが正常
- false : いずれか、または全てのファイルに読み込みエラー
Template.GetFromURI(type, id, uri, option)
この機能は現在サポートしていません。
Template.GetHTML()、Template.GetDOM()、Template.GetXML()の代わりに
CGIスクリプトなどのデータを受信し、テンプレートに適用します。
CGIスクリプトから取得するデータは、プレーンテキスト(JSON)、XMLのいずれかです。
XMLの場合は、nodeNameとnodeValueがオブジェクトのプロパティと値になります。
---- 引数 ----
- type (String)
- 'html', 'dom', 'xml'のいずれか
戻り値のタイプをHTML、HTML-DOMエレメント、XML-DOMエレメントのいずれかにします。 - id (String)
- Template.Load()の第一引数のIDに対応。
- uri (String)
- データ受信のためのCGIスクリプトのURI
- option (Object)
{method: (String), postData: (String), user: (String), password: (String), enctype: (String), encoded: (Boolean), headers: (Object), onFileNotFound: (Function), onError: (Function), async: (boolean), namespace: (String), slt: (Object)}
サーバーに送信するデータ、および受信後の動作指示- method: (String)
- 送信メソッド。"GET"または"POST"
- postData (String, Object)
- サーバーに送信するデータ
Objectが渡された場合は、そのプロパティと値を組にして送信します。 - user: (String)
- Authroizationが必要なページで使用するユーザー名
- password: (String)
- Authroizationが必要なページで使用するパスワード
- enctype (String , default:"applecation/x-www-form-urlencoded")
- 送信データ種別
"application/x-www-form-urlencoded"、"multipart/form-data"、"multipart/mixed"をサポート - encoded (Boolean , default:true)
- 送信データがURIエンコードされているか
falseが指定されるとencodeURIComponentを使用してエンコードします。 - headers: (Object)
- RequestHeader
- onSuccess (Function)
- 受信、および挿入完了後に呼び出すコールバック関数
呼び出し時の引数にはHTML、HTML/XHTML-DOMエレメントの配列、XML-DOMエレメントのいずれかになります。 - onFileNotFound (Function)
- 受信完了後、ファイルが存在しない場合に呼び出すコールバック関数
呼び出し時の引数にはTemplate.Netが作成したオブジェクト
obj.clientプロパティがXMLHttpRequestオブジェクト本体です。 - onError (Function)
- 受信完了後、エラーがあった場合に呼び出すコールバック関数
呼び出し時の引数にはTemplate.Netが作成したオブジェクト
obj.clientプロパティがXMLHttpRequestオブジェクト本体です。 - async (Boolean , default:true)
- 非同期指定
- namespace: (String)
- XHTML/SMLのノードに適用するnamespace
typeが'xml'または'dom'の時に有効。
XHTMLで作成している場合に true、または、htmlタグのxmlns属性を指定してください。 - slt: (Object)
{id1: URI, id2: URI [, ...]}
XMLファイルに適用するXSLファイル。
typeが'xml'時に有効。
Template.Load()で指定したxsl-IDか、URLを記述
---- サンプル ----
template.tpl
<h1>{tpl:title}</h1> <p>{tpl:summary}</p>
script
domarray=Template.GetFromURI('dom', tplId, 'data.cgi'); docobj=document.getElementById('doc'); for(var id=0;i<domarray.length;i++){ docobj.appendChild(domarray[i]); }
Template.InsertFromURI(element, type, id, uri, option)
この機能は現在サポートしていません。
Template.GetHTML()、Template.GetDOM()、Template.GetXML()の代わりに
CGIスクリプトなどのデータを受信し、テンプレートに適用します。
CGIスクリプトから取得するデータは、プレーンテキスト(JSON)、XMLのいずれかです。
XMLの場合は、nodeNameとnodeValueがオブジェクトのプロパティと値になります。
戻り値、送信が正常に完了すればtrue、失敗すればfalse
---- 引数 ----
- element (String || HTML-DOM-Element)
- HTML/XHTMLドキュメント内の要素、またはそのID
- type (String)
- 'html', 'dom', 'xml'のいずれか
戻り値のタイプをHTML、HTML-DOMエレメント、XML-DOMエレメントのいずれかにします。 - id (String)
- Template.Load()の第一引数のIDに対応。
- uri (String)
- データ受信のためのCGIスクリプトのURI
- option (Object)
-
{method: (String), postData: (String), user: (String), password: (String), enctype: (String), encoded: (Boolean), headers: (Object), onFileNotFound: (Function), onError: (Function), async: (boolean), add: (Boolean), namespace: (String), slt: (Object)}
サーバーに送信するデータ、および受信後の動作指示- method: (String)
- 送信メソッド。"GET"または"POST"
- postData (String, Object)
- サーバーに送信するデータ
Objectが渡された場合は、そのプロパティと値を組にして送信します。 - user: (String)
- Authroizationが必要なページで使用するユーザー名
- password: (String)
- Authroizationが必要なページで使用するパスワード
- enctype (String , default:"applecation/x-www-form-urlencoded")
- 送信データ種別
"application/x-www-form-urlencoded"、"multipart/form-data"、"multipart/mixed"をサポート - encoded (boolean , default:true)
- 送信データがURIエンコードされているか
falseが指定されるとencodeURIComponentを使用してエンコードします。 - headers: (Object)
- RequestHeader
- onSuccess (Function)
- 受信、および挿入完了後に呼び出すコールバック関数
呼び出し時の引数にはHTML、HTML/XHTML-DOMエレメントの配列、XML-DOMエレメントのいずれかになります。 - onFileNotFound (Function)
- 受信完了後、ファイルが存在しない場合に呼び出すコールバック関数
呼び出し時の引数にはTemplate.Netが作成したオブジェクト
obj.clientプロパティがXMLHttpRequestオブジェクト本体です。 - onError (Function)
- 受信完了後、エラーがあった場合に呼び出すコールバック関数
呼び出し時の引数にはTemplate.Netが作成したオブジェクト
obj.clientプロパティがXMLHttpRequestオブジェクト本体です。 - async (boolean , default:true)
- 非同期指定
- add (Boolean , Default: false)
- HTMLを追加(true)するか更新(false)するかの指定。
- namespace: (Boolean || String , Default: true)
- XHTML/SMLのノードに適用するnamespace
typeが'xml'または'dom'の時、かつ、ドキュメントがXHTMLまたはXMLの時に有効。
XHTMLドキュメントではtrueを指定することで、ドキュメントのhtmlタグに書かれたxmlns属性を取得し、デフォルトのnamespaceとします。 - slt: (Object)
{id1: URI, id2: URI [, ...]}
この機能は現在サポートしていません。
XMLファイルに適用するXSLファイル。
typeが'xml'時に有効。
Template.Load()で指定したxsl-IDか、URLを記述
---- サンプル ----
template.tpl
<h1>{tpl:title}</h1> <p>{tpl:summary}</p>
script
domarray=Template.GetFromURI('dom', tplId, 'data.cgi'); docobj=document.getElementById('doc'); for(var id=0;i<domarray.length;i++){ docobj.appendChild(domarray[i]); }
Template.Net.Load(url, callback, option)
いわゆるAjaxライブラリ。
戻り値はObject。
Object.clientがXMLHttpRequest/ActiveXObject本体。
---- 引数 ----
- url (String)
- データ送信先URI
- callback (Function)
- 受信完了後に呼び出すコールバック関数
- option (Object)
{method: (String), postData: (String), user: (String), password: (String), enctype: (String), encoded: (Boolean), headers: (Object), onFileNotFound: (Function), onError: (Function), async: (Boolean)}
サーバーに送信するデータ- method: (String , default: "GET")
- 送信メソッド。"GET"、"POST"、"HEAD"のいずれか
- postData (String, Object)
- サーバーに送信するデータ
Objectが渡された場合は、そのプロパティと値を組にして送信します。 - enctype (String , default:"applecation/x-www-form-urlencoded")
- 送信データ種別
"application/x-www-form-urlencoded"、"multipart/form-data"、"multipart/mixed"をサポート。
ただし、ファイルフィールドのデータ(ファイル)はJavaScriptの制限により送信できません。(postDataの内容のみ送信します。)
multipart/form-data、multipart/mixedについての詳細はmultipartの項目を御覧ください。 - encoded (Boolean , default:false)
- 送信データがURIエンコードされているか
falseが指定されるとencodeURIComponentを使用してエンコードします。
プログラマー自身が送信データを作成する場合はエンコードし、String形式で渡してください。
Object(JSONデータ)から送信データの作成をtemplate.jsに任せる場合はエンコード不要、encodedの指定も不要です。 - headers: (Object)
- RequestHeader
- onFileNotFound (Function)
- 受信完了後、ファイルが存在しない場合に呼び出すコールバック関数
呼び出し時の引数にはTemplate.Netが作成したオブジェクト
obj.clientプロパティがXMLHttpRequestオブジェクト本体です。 - onError (Function)
- 受信完了後、エラーがあった場合に呼び出すコールバック関数
呼び出し時の引数にはTemplate.Netが作成したオブジェクト
obj.clientプロパティがXMLHttpRequestオブジェクト本体です。 - user (String)
- ユーザー名
- password (String)
- パスワード
- async (Boolean , default:true)
- 非同期指定
---- サンプル ----
var o=new Template.Net.Load('sample.cgi', callback, { postData:'postData' ,onFileNotFound:callbackError ,onError:callbackError ,async:true ,method:'GET' }); function callback(obj){ alert(obj.client.responseText); } function callbackError(obj){ alert('something error occured'); }
---- サンプル ----
encodedオプションについて
postDataがStringの場合
encoded指定にかかかわらずエンコードしません。
data="fruits=apple&orrange&vegetables=cabbage&carrot"; Template.Net.Load('bbs.cgi', callback, {postData:data}); => 送信データは "fruits=apple&orrange&vegetables=cabbage&carrot"
postDataがObjectの場合
encodedにfalseが指定されている場合、エンコードします。(デフォルト)
data={ fruits : "apple&orrange" vegetables : "cabbage&carrot" }; Template.Net.Load('bbs.cgi', callback, {postData:data}); => 送信データは "fruits=apple%26orrange&vegetables=cabbage%26carrot"encodedにtrueが指定されるとエンコードしません。
data={ fruits : "apple&orrange" vegetables : "cabbage&carrot" }; Template.Net.Load('bbs.cgi', callback, {postData:data}); => 送信データは "fruits=apple&orrange&vegetables=cabbage&carrot"
通常は、エンコード済みのStringか、エンコード無しのObjectを渡してください。
プログラマー自身が送信データを作成する場合はString形式、
template.jsに任せる場合はObjectで渡してください。
enctypeをmutipart/form-data、またはmultipart/mixedを指定した場合
encodedの指定にかかわらず、encodeしません。
enctypeのmutipart/form-data、multipart/mixedについて
このライブラリはmultipart/form-data、multipart/mexedをサポートしています。
postDataにString、JSON-Object、JSON-Object配列のいずれかを送信できます。
Stringデータ
この形式はおすすめしません
Stringデータは & と =で分割します。(エンコードを戻す処理は行いません)
data="fruits=apple%26orrange&vegetables=cabbage%26carrot"; Template.Net.Load('bbs.cgi', callback, {postData:data, enctype: 'multipart/mixed' }); => 送信データは以下に相当するデータをmultipart/*の形式に変換したものです。 fruits=apple%26orrange vegetables=cabbage%26carrot
エンコードされていないStringデータが渡された場合、データが破壊される可能性があります。
名前が指定されていないデータは"keywords"という名前が付与されます。
名前無しのデータを送信する場合はenctypeにapplication/x-www-urlencodedを指定してください
data="fruits=apple&orrange&vegetables=cabbage&carrot"; Template.Net.Load('bbs.cgi', callback, {postData:data, enctype: 'multipart/mixed' }); => 送信データは以下に相当するデータをmultipart/*の形式に変換したものです。 fruits=apple keywords=orrange vegetables=cabbage keywords=carrot
Objectデータ
Objectデータは プロパティとその値のセットを送信します。
data={ fruits : "apple&orrange" vegetables : "cabbage&carrot" }; Template.Net.Load('bbs.cgi', callback, {postData:data, enctype: 'multipart/mixed' }); => 送信データは以下に相当するデータをmultipart/*の形式に変換したものです。 fruits=apple&orrange vegetables=cabbage&carrot
通常は、エンコード無しのObjectを渡してください。
Object配列
Object配列を使用すると、データ1つ1つにContent-Typeなどの指定も行えます。
プロパティとデフォルト
{ name: (String defaut:'keywords') filename: (String defaut:'') disposition: (String defaut:'form-data') contentType: (String defaut:'text/plain') data: (String, Object.toString()) headers: (Object, null) }
このデータを1つのデータとして、配列にしてください。
headersはXMLHttpRequestオブジェクトのRequestHeaderと同じですが、データ1つずつに違うものを指定できます。
postData = [ {name: 'fruits', data: 'apple&orrange', disposition: 'text', contentType: 'text/plain' } ,{name: 'vegetables', data: 'cabbage&carrot', disposition: 'text', contentType: 'text/plain' } ]; Template.Net.Load('bbs.cgi', callback, {postData:data, enctype:'multipart/mixed'}); => 送信データは以下に相当するデータとheadersをmultipart/*の形式に変換したものです。 fruits=apple&orrange vegetables=cabbage&carrot
サーバーの処理に付いて
multipart/*のデータを受信するには、CGIプログラムがmultipart/*に対応している必要があります。Perl5.8付属のCGIモジュール、PHP5.0標準状態ではmultipart/form-dataには対応していますが、multipart/mixedには対応していないようです。
サーバーが対応していない場合は、multipart/form-dataで送信するか、application/x-www-form-urlencodedを使用してください。
template.jsでは、multipart/form-dataとmultipart/mixedは基本的に同じものを送信しています。