2012-01-02 15 views
0

GETメソッドを使用してユーザー名とパスワードを送信してログイン資格証明を検証するAJAXを用意しました。 POSTメソッドを使用するようにこのコードを更新したいですが、どこから始めるか、何を変更するのかはわかりません。POSTメソッドを使用してページに送信するAJAX

私がこれをやっている理由は、別のページに送信されるデータが大きくなり、GETがそれをすべて送信しないためです。

function createObject() 
{ 
    var request_type; 
    var browser = navigator.appName; 
    if(browser == "Microsoft Internet Explorer") 
    { 
     request_type = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    else 
    { 
     request_type = new XMLHttpRequest(); 
    } 
    return request_type; 
} 

var http = createObject(); 

var usr; 
var psw; 
function login() 
{ 
    usr = encodeURI(document.getElementById('username').value); 
    psw = encodeURI(document.getElementById('password').value); 
    http.open('get', 'login.php?user='+usr+'&psw='+psw); 
    http.onreadystatechange = loginReply; 
    http.send(null); 
} 

function loginReply() 
{ 
    if(http.readyState == 4) 
    { 
     var response = http.responseText; 
     if(response == 0) 
     { 
      alert('Login failed! Verify user and password'); 
     } 
     else 
     { 
      alert('Welcome ' + usr); 

      document.forms["doSubmit"].elements["usr"].name = "usr"; 
      document.forms["doSubmit"].elements["usr"].value = usr; 
      document.forms["doSubmit"].elements["pwd"].name = "pwd"; 
      document.forms["doSubmit"].elements["pwd"].value = psw; 
      document.forms["doSubmit"].action = location.pathname + "user/"; 
      document.forms["doSubmit"].submit(); 
     } 
    } 
} 

このコードは、URL内のパラメータを取得し、送信使用し、応答を待ち:

この

は私が持っているコードです。私はサイズのためにPOST経由でパラメータを送信したい。

後述のように送信されるデータは、<textarea name='taData' id='taData'></textarea>

+0

これは、資格情報を確認するために危険な方法です。 _GET変数はサードパーティに100%公開されているため、URLを介してパスワードを渡すことは本当に使用すべきではありません。 –

+0

@BenDだから彼は 'POST'を使用したいのです – xandercoded

+0

私はポストに切り替えるために彼に拍手喝采しますが、"私はこれをやっている理由は、別のページに送られるデータが大きく、GETは送信しません実際には、彼のウェブサーバーを再構成することによってURLの長さ制限の大部分を克服することができます(これらの文字列は絶対に大量であり、ブラウザの上限に達しない限り) ...私は元のコメントでこれを明らかにする必要がありました。 –

答えて

1

変更するためのコードの行である:

より:

http.open('get', 'login.php?user='+usr+'&psw='+psw);

:を

http.open('post', 'login.php'); 
http.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
http.send('user=' + usr + '&psw=' + psw + '&tboxName=' + yourTextBoxValue); 

トピックに関する追加情報:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms757849(v=vs.85).aspx

+0

しかし、「」が送信されたことを確認するにはどうすればよいですか? – sikas

関連する問題