Wml-submit-data
WML-サーバーへのデータの送信
多くの場合、ユーザーがサーバーにデータを送信するようにします。 _HTML Form_と同様に、WMLはユーザーデータをWebサーバーに送信するメカニズムも提供します。
WMLでサーバーにデータを送信するには、<go> … </go>と<postfield/>タグが必要です。 <postfield/>タグは、<go> … </go>タグのペアで囲む必要があります。
サーバーにデータを送信するには、設定されているすべてのWML変数を収集し、<postfield>要素を使用してそれらをサーバーに送信します。 <go> … </go>要素は、投稿方法をPOSTまたはGETに設定し、アップロードされたデータを処理するサーバー側スクリプトを指定するために使用されます。
前の章では、ユーザーからの入力を取得するさまざまな方法を説明しました。 これらの入力要素は、WML変数を入力された値に設定します。 また、WML変数から値を取得する方法も知っています。 そのため、次の例は、name、age _、 sex_の3つのフィールドをサーバーに送信する方法を示しています。
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN"
"http://www.wapforum.org/DTD/wml12.dtd">
<wml>
<card id="card1" title="WML Form">
<p>
Name: <input name="name" size="12"/>
Sex : <select name="sex">
<option value="male">Male</option>
<option value="female">Female</option>
</select>
Age : <input name="age" size="12" format="*N"/>
<anchor>
<go method="get" href="process.php">
<postfield name="name" value="$(name)"/>
<postfield name="age" value="$(age)"/>
<postfield name="sex" value="$(sex)"/>
</go>
Submit Data
</anchor>
</p>
</card>
</wml>
WAPデバイスに上記のコードをダウンロードすると、name、age _、 sex_の3つのフィールドと_Submit Data_の1つのリンクを入力するオプションが提供されます。 3つのフィールドを入力し、最後に[データの送信]リンクを選択して、入力したデータをサーバーに送信します。
<go>タグの_method_属性は、フォームデータの送信に使用するHTTPメソッドを指定します。
HTTP POSTメソッドが使用される場合、送信されるフォームデータはリクエストのメッセージ本文に配置されます。 HTTP GETメソッドが使用される場合、送信されるフォームデータはURLに追加されます。 URLには限られた数の文字しか含めることができないため、GETメソッドには、送信するデータのサイズに制限があるという欠点があります。 ユーザーデータに非ASCII文字が含まれている場合、POSTメソッドを使用してエンコードの問題を回避する必要があります。
HTMLとWMLには大きな違いが1つあります。 HTMLでは、<input>および<select>タグのname属性を使用して、送信するパラメーターの名前を指定しますが、WMLでは、<postfield>タグのname属性を使用して同じことを行います。 WMLでは、<input>および<select>のname属性を使用して、フォームデータを格納する変数の名前を指定します。
次の章では、サーバー側でアップロードされたデータを処理する方法を説明します。