powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Ответа на запрос дождаться не могу (Ajax)
6 сообщений из 6, страница 1 из 1
Ответа на запрос дождаться не могу (Ajax)
    #36135558
Usik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди начал недавно изучать AJAX полазил по всяким сайтам и решил написать первое пробное приложение, в общем это форма входа в систему.Дак вот, когда я ввожу в нее данные и сабмичу форму, то появляется надпись Loading и все, что тут не так подскажите плз...
login_form.HTML
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<script src="ajax_framework.js" language="javascript"></script>
<!-- Show Message for AJAX response -->
<div id="login_response"></div>
<!-- При отправке формы вызывается функция login() из ajax_framework.js -->
<form action="javascript:login()" method="post">
<input name="emailLogin" type="text" id="emailLogin" value=""/>
<input name="pswLogin" type="password" id="pswLogin" value=""/>
<input type="submit" name="Submit" value="Login"/>
</form>

ajax_framework.js
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
//--------------------------------------------------------------
function createObject()
 {
   var xmlhttp;
    try
     {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
     }
    catch (e)
     {
       try
        {
         xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (E)
        {
         xmlhttp = false;
        }
     }
  if (!xmlhttp && typeof XMLHttpRequest!='undefined')
    xmlhttp = new XMLHttpRequest();
  return xmlhttp;
}
//------------------------------------------------------------------
var http = createObject();
//------------------------------------------------------------------
 function login()
  {
    document.getElementById('login_response').innerHTML = "Loading..."
    var email = encodeURI(document.getElementById('emailLogin').value);
    var psw = encodeURI(document.getElementById('pswLogin').value);
//    document.write(email);
//    document.write(psw);
    http.open('get', 'login.php?email='+email+'&psw='+psw,true);
    http.onreadystatechange = loginReply;
    http.send(null);
    
  }
//-------------------------------------------------------------------
 function loginReply()
  {
   if(http.readyState ==  4 )
    {
     var response = http.responseText;
     if(response ==  0 )
      {
       document.getElementById('login_response').innerHTML = 'Login failed! Verify user and password';
       document.getElementById('login_response').innerHTML = 'Welcome'+response;
      }
    }
 }
//----------------------------------------------------------------------------

login.php
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<?php
  $db_host="localhost";
  $db_name="registration";
  $username="root";
  $password="55745";
  mysql_connect($db_host,$username,$password);
  mysql_select_db($db_name);

    if(isset($_GET['email']) && isset($_GET['psw']))
    {
     $email = $_GET['email'];
     $psw = $_GET['psw'];
     $getUser_sql = 'SELECT * FROM USER WHERE email="'. $email . '" AND psw = "' . $psw . '"';
     $getUser  = mysql_query($getUser_sql);
     $getUser_result =  mysql_fetch_assoc($getUser);
     $getUser_RecordCount = mysql_num_rows($getUser);
       if($getUser_RecordCount <  1 )
        echo '0';
       else
        echo $getUser_result['email'];
     }
?>
...
Рейтинг: 0 / 0
Ответа на запрос дождаться не могу (Ajax)
    #36135870
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну все правильно - твой код выводит строку "Loading" и все ... А что ты хочешь?

В случае получения ответа ты сравниваешь ответ с нулем и если нуль, то вывести сообщение об ошибке. А если не нуль (все остальные варианты), то ничего не делать. Так что все правильно. Сделай альтернативную обработку (вставку кода, обработку ответа - не знаю, что там у тебя сервер возвращает).

И совет не использовать предопределенные переменные ... на всякий случай. Это об http.
...
Рейтинг: 0 / 0
Ответа на запрос дождаться не могу (Ajax)
    #36136247
Usik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем я тут переработал маленько...

Файл login_form.html
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<script src="ajax_framework.js" language="javascript"></script>
<!-- Show Message for AJAX response -->
<div id="login_response"></div>
<form action="javascript:login()" method="post">
 <table id="Login_table" border="1">
   <tr>
    <td> 
     <input name="emailLogin" type="text" id="emailLogin" value=""/>
    </td> 
    <td>   
     <input name="pswLogin" type="password" id="pswLogin" value=""/>
    </td>
   </tr>
 </table>
<input type="submit" name="Submit" value="Login"/>
</form>

Файл ajax_framework.js
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
//--------------------------------------------------------------
function createObject()
 {
   var xmlhttp;
    try
     {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
     }
    catch (e)
     {
       try
        {
         xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (E)
        {
         xmlhttp = false;
        }
     }
  if (!xmlhttp && typeof XMLHttpRequest!='undefined')
    xmlhttp = new XMLHttpRequest();
  return xmlhttp;
}
//------------------------------------------------------------------
var http = createObject();
//------------------------------------------------------------------
 function login()
  {
    var nocache= Math.random();
   // document.write(nocache) ;
    document.getElementById('login_response').innerHTML = "Loading..."
    var email = encodeURI(document.getElementById('emailLogin').value);
    var psw = encodeURI(document.getElementById('pswLogin').value);
    http.open('get', 'login.php?email='+email+'&psw='+psw+'&nocache = '+nocache,true);
    http.onreadystatechange = loginReply;
    http.send(null);
    
  }
//-------------------------------------------------------------------
 function loginReply()
  {
   if(http.readyState ==  4 )
    {
     var response = http.responseText;
     if(response ==  0 )
       document.getElementById('login_response').innerHTML = 'Login failed! Verify user and password';
     
     if(response == '')
       document.getElementById('login_response').innerHTML = 'Connection problems!';
     else
       document.getElementById('login_response').innerHTML = 'Welcome '+response; 
      
    }
 }
//----------------------------------------------------------------------------

Файл login.php
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<?php
  $db_host="localhost";
  $db_name="registration";
  $username="root";
  $password="55745";
  mysql_connect($db_host,$username,$password);
  mysql_select_db($db_name);

  if(isset($_GET['email']) && isset($_GET['psw']))
    {
     $email = $_GET['email'];
     $psw = $_GET['psw'];
     $getUser_sql = 'SELECT * FROM USER WHERE email="'. $email . '" AND psw = "' . $psw . '"';
     $getUser  = mysql_query($getUser_sql);
     $getUser_result =  mysql_fetch_assoc($getUser);
     $getUser_RecordCount = mysql_num_rows($getUser);
       if($getUser_RecordCount <  1 )
        echo '0';
       else
         echo 'success';    
  }
?>


Что бы я не ввел получаю такое: Welcome 0. Это как так? Где я опять накосячил?
...
Рейтинг: 0 / 0
Ответа на запрос дождаться не могу (Ajax)
    #36136576
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, код ПэХаПэ всовывать необязательно - не тот раздел ...

У тебя с сервера приходит ответ "0", затем твой див заполняется надписью 'Login failed! Verify user and password' (так как ответ "0") и тут же затирается надписью 'Welcome 0', так как ответ не пустая строка. Все работает в точности с твоим кодом.

В первую очередь проверяй код на сервере (если нужна помощь, то это не тут), а клиент работает правильно. Другое дело, что отсутствует логика, но это твоя проблема ... ты не говоришь, что тебе нужно, а код работает правильно.
...
Рейтинг: 0 / 0
Ответа на запрос дождаться не могу (Ajax)
    #36137673
Usik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем в конечном итоге я хотел бы иметь форму которая бы предоставлялась пользователю при первой регистрации на сайте. Собственно после ввода значений логина, мыла, пароля , подтверждения пароля, сценарий php должен проверить корректность данных и ответить строкой как-нить так :login-good email-good password-good reppsw-bad. И уже эту строку будет парсить Javascript (клиентская составляющая), соответственно если она находит сочетание с bad , например reppsw-bad, то нужно как-нить обратиться к ячеке таблицы и ниже эдита написать красным цветом, типа повторите пароль.

Форма html будет содержать в себе таблицу , ну что-нить вида:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<script src="ajax_framework.js" language="javascript"></script>

<!-- Show Message for AJAX response -->
<div id="login_response"></div>

<!-- При отправке формы вызывается функция login() из ajax_framework.js -->
<form action="javascript:login()" method="post">
 <table id="Login_table" border="1">
  <tr>
    <td id="login_td"> 
     <input name="emailLogin" type="text" id="emailLogin" value=""/>
    </td>    
    <td id="psw_td">   
     <input name="pswLogin" type="password" id="pswLogin" value=""/>
    </td>
   </tr>
 </table>
<input type="submit" name="Submit" value="Login"/>
</form>

Собственно первый вопрос... мне что-то говорит , что передача строк в ответе подобной этой login-good email-good password-good reppsw-bad не есть гуд, хотелось бы узнать как это делается по хорошему.

Второй вопрос собственно как обратиться к нужной ячейке таблицы? Например пусть в выше предложенной форме пользователь коряво ввел emai, тогда к ячейке таблицы
Код: plaintext
1.
2.
 <td id="login_td"> 
     <input name="emailLogin" type="text" id="emailLogin" value=""/>
    </td> 
надо обратиться и написать в ней красными буквами "повторие ввод" ну то есть чтобы ячейке соответствовал код
Код: plaintext
1.
2.
3.
 <td id="login_td"> 
     <input name="emailLogin" type="text" id="emailLogin" value=""/><br>
     <font color="red"> Повторите попытку</font>
    </td> 
...
Рейтинг: 0 / 0
Ответа на запрос дождаться не могу (Ajax)
    #36137872
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самое простое - сесть с бумажкой и представить логику поведения ...

1. Отправляем данные (форма тут и подавно не нужна, если нет прямого перехода).
2. Получаем ответ, сверяем с нужным и выдаем результат.
3. Если все Ок, делаем дальнейшие действия.
4. Если ответ негативный, информируем пользователя о неправильном ответе и предлагаем снова ввести.

Что тут на 10 сообщений растягивать - непонятно.

Отдавать ответ лучше всего посредством строки JSON - удобно, наглядно.

Что касается логики, то она на начальном уровне - получить на входе нужный ответ не составит труда (самый-самый простой сниффер с этим справится). Разделение ресурсов необходимо делать на сессионно-серверном уровне: если пользователь зарегился, то ему теперь можно отдавать определенный контент или страницы. Но это больше относится к серверному программированию. Иначе это баловство. Javascript - язык интересный, но он решает только клиентские вопросы, но никак не вопросы доступа и безопасности.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Ответа на запрос дождаться не могу (Ajax)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]