Wml-submit-data

提供:Dev Guides
移動先:案内検索

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属性を使用して、フォームデータを格納する変数の名前を指定します。

次の章では、サーバー側でアップロードされたデータを処理する方法を説明します。