2012-01-02 6 views
0

У меня есть эта часть AJAX, которая проверяет учетные данные для входа, отправив имя пользователя и пароль с помощью метода GET. Я хочу обновить этот код, чтобы использовать метод POST, но я не знаю, с чего начать или что менять.AJAX отправить на страницу с помощью метода POST

Причина, по которой я делаю это, - данные, которые будут отправлены на другую страницу, будет большой, и 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(); 
     } 
    } 
} 

Этот код использует GET и отправить параметры в 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);

To:

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