HTTP::GET,POSTメソッド

HTMLのformタグなどでよく使われるGET,POSTメソッドについてです。
・GET method
(クライアントからみてサーバから)データ検索結果をGETする時に
使います。

送るデータをURLの後ろに ? や & をつけて(クエリという)、送信します。

<form method="GET" action="http://hogehoge.com/">
名前:<input type="text" name="NAME"> //名前をほげにしたとします。
年齢:<input type="text" name="age"> //20歳にしたとします。
<input type="hidden" name=p value=t>
<input type="submit" value="送信">
</form>


のようなフォームがあった場合、
送信されるデータは、

http://hogehoge.com/name=ほげ&age=20&p=t


のようになるはずですが、実際は送信するデータにURLエンコードという符号化
処理が行われます。

・URLエンコードとは

URLに使ってはいけない文字を使うときに使います。


エンコード

エンコード

ほげ

%82%d9%82%b0

hoge

hoge

文字コードによって、エンコード結果が異なるので
サーバに対応する文字コードを使用しましょう。

ex)


文字コード

エンコード

エンコード

Shift-JIS

ほげ

%82%d9%82%b0

UTF-8

ほげ

%e3%81%bb%e3%81%92

EUC-JP

ほげ

%a4%db%a4%b2

GETメソッドでは送るデータがURLになるため、
送信できるデータは数KBです。
したがって、クエリーを渡して結果を得る時例えば
検索結果を得るときなどに使うのが向いています。


・POSTメソッドとは
(クライアントからみてサーバに)POSTつまり投稿するメソッドです。
掲示板の書き込みやまとまったデータを送信する時につかいます。

Javascript::DOMを使って動的にiframeを作成

要素を使って動的にHTML文書に追加するには、

1.createElementメソッドを使って要素を生成
2.setAttribute()メソッドを使って属性を正しく設定
3.appendChild()メソッドを使って追加

createElementメソッド
書式
createElement(タグの名前)
戻り値:新たに作成したオブジェクト
引数:タグの名前

ex)
var a=createElement("img"); //imag要素を作成
var b=createElement("p"); //p要素を作成

setAttributeプロパティ
書式
setAttribute(属性名,属性値)

ex)
document.body.setAttribute("bgcolor","orange");
//ドキュメントのbody要素のbgcolor属性をorangeにする

getElementByIDメソッド
書式
戻り値:指定したIDを持つオブジェクト
引数:HTML文書内のID

ex)
var pbox=document.getElementByID("plabel");
//plabelというIDがついたオブジェクトがpboxに代入される。


appendChildメソッド
書式
appendChild(追加するオブジェクト)
引数:追加するオブジェクト

ex)
var imgob=createElement(img);
imgob.setAttribute("alt","画像");
imgob.setAttribute("src","test.img");
var pbox=document.getElementByID("plabel");
pbox.appendChiled(imgob);
//pboxというオブジェクトにimagobというオブジェクトを追加

Javascript::ウインドウの制御

JavascriptのWindow制御用メソッド

open()メソッド

書式

戻り値:新たに生成されたウインドウのオブジェクト

引数:open(
新たにつくるウインドウのURL,
ウインドウの名前,
ウインドウのサイズとGUI部品,
同名のウインドウが存在の時の動作
)

第3引数は、色々と指定できます。詳細はお勉強サイトにて。
第4引数は論理値(true or false)で指定します。
デフォルトはfalse。

close()メソッド

書式

ウインドウオブジェクト.close();

上記のように書くだけでOK。

javascript::配列

・ジャバスクリプトでは配列はオブジェクトである。
typeof演算子で配列を調べると結果は,objectになる。
つまり、配列はオブジェクトであるのでプロパティやメソッドを持つ。
以下、配列の基本的な使い方。

・配列の生成方法

書式
1. 配列名=new array(要素数);
2. 配列名=new array(要素1,要素2,・・・);
3. 配列名={要素1,要素2,・・・};

※2より1のほうが優先され、要素がひとつなら
素数の長さという意味になる。

var x=new array();
var x=new array(10,20,30,"配列"); //要素名を指定できる
var x=new array(10); //1個の数値を指定。
var x={"東京都""神奈川県""埼玉県"}; //こういう形でも要素を指定できる。

xという配列を生成する場合、new演算子とarrayクラスのコンストラクタを使い
生成する配列名=new array(要素名);
とすれば配列が生成できる。

・配列要素へのアクセス

xという配列の場合、
a=x[0]; //aにx[0]の値を代入
x[2]="愛知県" //xの要素2に愛知県という文字列を代入
x[i]=t; //要素に変数を使用しても良い。

配列の先頭要素は,C言語などと同じく0から始まる。

・配列要素の長さ

lengthプロパティ

書式 配列名.length 


lengthプロパティは配列の要素の数を返します。

var x=new array(3);
alert(x.length); //結果:3

for(i=0;i<x.length;i++){
alert(x[i]); 
} //結果:102030

配列の要素を全部調査するときなどは、lengthプロパティを使う。

・配列要素の追加

var x=new array(3);
x[5]=10; //値をいきなり代入してもよい。

配列要素は固定されないため、要素番号が飛んでもOK。




・配列のメソッド

join()
書式 配列名.join(区切り文字)

区切り文字を省略した場合は、,(カンマ)で
配列の値を区切ります。

var x={'お','は','よ','う'}; //要素をお は よ うで指定
a=x.join();
alert(a); //結果:お,は,よ,う

Googleじゃんけんで学ぶavascriptで正規表現1

javascript正規表現を学ぶために題材として、
Googleじゃんけんを作成します。

Googleじゃんけんとは?

Googleで何か検索するとサイト登録数がでます。
そのヒット数でどちらか多いか競うゲームです。

ex)沢尻エリカ 約 4,320,000 件

長澤まさみ 約 4,570,000 件

なら長澤まさみの勝ち

javascriptで外部サイトのHTMLを取得するには、

XMLHttpRequestオブジェクトを使用するとできます。

XMLって名前がついてますけど、XMLじゃなくても大丈夫。(任意のテキストを受信することができる)
以下が手順。

1.XMLHttpRequestをnew演算子をつかってオブジェクトを生成
(IE用とFirefox用で処理分岐)
2.XMLHttpRequestのopen()メソッドを使って、
サーバのURLや通信方法、同期非同期などを設定
3.非同期通信の場合、onreadystatechange属性を使って
サーバの応答状態を調べる
4.XMLHttpRequestのsend()メソッドを使って、
open()メソッドに設定したサーバのURLに対して
通信する。
5.readystate属性を使ってサーバからデータを受信できたか調べる
6.サーバからデータを受信できたら、responseText属性から
文字列を取得できます。

・new演算子を使ってXMLHttpRequestオフジェクトを生成
var request=new XMLRequest();
・IE6以前とその他のブラウザに応じて処理分岐
function createhttprequest(){

var request=null;

if("XMLHttpRequest" in window){

	request= new XMLHttpRequest();
        


}
else if("ActiveXObject" in window){

	try{

	request=new ActiveXobject("Msxml2.XMLHTTP");
	


	}catch(e){
	

		try{

		request=new ActiveXObject("Microsoft.XMLHTTP");
		

		}catch(e){
}

	}

}
return request;
}

IE6以前まではXMLHttpRequestオブジェクトはサポートされていないため、
サポートされていなかった場合、IE6以前用にActiveXオブジェクトを生成します。


・open()メソッド

第一引数は、GETやPOSTなどのHTTPリクエストメソッドの文字列
第二引数は、通信するサーバのURL
第三引数は、trueで非同期,falseで同期通信を設定
第四と第五引数は、user名とpasswordで省略可。
ex)
open("GET",'http://d.hatena.ne.jp/pepo0105/',true);
・onreadystatechange属性を使ってサーバの応答状態を調べる
ex)request.onreadystatechange=sorceget;
※生成したXMLHttpRequestオブジェクト.onreadystatechange=関数名の()なし;
のように記述

同期通信の場合、サーバから応答がないとクライアント側が
ジーになってしますためonreadystatechange属性を使って
サーバの応答状態を調べます。

サーバから応答が合った場合onreadystatechange属性で設定した
関数が実行されます。

・readystateプロパティ

0:初期化されてない
1:open()メソッド成功
2:リクエストに成功
3:HTTPヘッダを取得
4:全て完了した
・statusプロパティ

HTTP応答ヘッダを取得できます。
200:正常に取得

readystateプロパティが4で

かつ

statusプロパティが200

なら取得したデータを使うことができます。

・send()メソッド
 void send(in DOMString data);
POSTメソッドでデータを送る場合は、send()メソッドの引数に
データを指定する。GETを使う場合や何もデータを送らなくてはいい場合
send(null)をnullを指定する。

サンプルコード

<?xml version="1.0">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>javascriptでHTMLのソースを取得</title>

<script language="javascript" type="text/javascript">

function createhttprequest(){

var request=null;

if("XMLHttpRequest" in window){

	request= new XMLHttpRequest();
        


}
else if("ActiveXObject" in window){

	try{

	request=new ActiveXobject("Msxml2.XMLHTTP");
	


	}catch(e){
	

		try{

		request=new ActiveXObject("Microsoft.XMLHTTP");
		

		}catch(e){
}

	}

}
return request;
}

var request;

function requestsorce(url){

request=createhttprequest();

request.open("GET",url,true);
request.onreadystatechange=sorceget;
request.send(null);
}

function sorceget(){


if (request.readyState == 4 && request.status == 200){
	
document.form1.sorce.value=request.responseText;
}
else{

}

}

</script>


</head>

<body>
テキストボックスにurlを入力してソース取得ボタンを押してください。
<form name="form1">
<input type="text" name="urlbox" size="40">
<input type="button" value="ソース取得" onclick="requestsorce(document.form1.urlbox.value)">
<textarea name="sorce" rows="120" cols="100">
ここにソースを表示
</textarea>
</form>
</body>
</html>

javascriptでHTMLのソースを取得1

必要に迫られて外部サイトのhtmlのソースを取得するプログラムを書かなければいけな

くったので、

手抜きでjavascriptでできないかと知らべてみたら、最近流行の「Ajax」で簡単に実現

できるらしい。Ajaxの根幹技術であるXMLHttpRequestを使うとできます。

下のALL Aboutのサイトで

( # XMLHttpRequestは、セキュリティを考慮して、リクエストを送信できるのは同一ドメイン内に制限されています。もし、別ドメインとのやりとりが必要ならサーバー側で処理して受け取るか、旧来のダイナミックロードな技を使う必要があります。)

とあり教えてgoo!なんかでも別のドメインとは通信できないとかいてあったが、なぜか別のドメインでもできるのですがなぜでしょう?

勉強サイト

Ajaxはじめの一歩 XMLHttpRequest
http://allabout.co.jp/internet/javascript/closeup/CU20050515A/index.htm

ウィリアムのいたずらの開発日記
http://blog.goo.ne.jp/xmldtp/e/625be225495dcb649161d9a3c09d6816