﻿// 非同期でリクエスト
function sendRequest( url, callback, method, data )
{
  // XMLHttpRequestオブジェクト生成
  var req = createXMLHTTP();
  if( !req ){ return; }
  
  // レスポンスデータ受信時に呼び出すイベントハンドラ
  req.onreadystatechange = function(){
    getResponse( req, callback );
  }
  
  // GETメソッドの場合はURLの後にクエリパラメータをつける
  if(method.toUpperCase() == 'GET' && data.length > 0){
    url += '?'+ data;
    data = '';
  }
  
  // 指定したURLに接続
  req.open( method, url, true );
  
  // POSTデータ用ヘッダ
  req.setRequestHeader("Content-Type", 
                       "application/x-www-form-urlencoded; charset=UTF-8");
  // HTTPリクエストを送信
  req.send( data );
}

// XMLHttpRequestオブジェクト生成
function createXMLHTTP()
{
  if( window.XMLHttpRequest ){ // IE以外
    return new XMLHttpRequest();
  }
  else if( window.ActiveXObject ){ // IE用(バージョンにより異なる)
    try {
      return new ActiveXObject("MSXML2.XMLHTTP");
    }
    catch (e) {
      try {
        return new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch(e2) {
        return null;
      }
    }
  }
  return null
}

// レスポンスデータ受信
function getResponse( req, callback )
{
  if( req.readyState == 4 ){ // 受信完了
    // 指定されたコールバック関数を呼ぶ
    if( req.responseText ){
      callback(req);
    }
  }
}
