2016-10-29 2 views
0

У меня есть HTML:Ajax в HTML, получить результат от PHP

<body> 
<div class="po-logo"> 
    <img src="img/logos/lw.png" alt="logo watchbees"/> 
</div> 
<form> 
<div class="mui-textfield mui-textfield--float-label reg-window"> 
    <input id="username" name="username" type="text"/> 
    <label>Username</label> 
</div> 
<div class="mui-textfield mui-textfield--float-label reg-window"> 
    <input id="password" name="password" type="password"/> 
    <label>Password</label> 
</div> 
<div class="mui-textfield mui-textfield--float-label reg-window"> 
    <button id="login" value="submit" onclick="return result" class="mui-btn mui-btn--raised reg-win-button">Sign in</button> 
</div> 
</form> 

Jquery в HTML:

$("#login").click(function(){ 
     var username=$("#username").val(); 
     var password=$("#password").val(); 
     if(($.trim(username).length > 0) & ($.trim(password).length > 0)) 
     { 
     $.ajax({ 
     type: "POST", 
     url: "http://127.0.0.1/app/login.php", 
     data: {username: username, password: password}, 
     beforeSend: function(){ $("#login").html('Prihlasovanie...');}, 
     success: function(data){ 
     if(data == "success") 
     { 
      localStorage.login="true"; 
      localStorage.username=username; 
      window.location.href = "profil.html"; 
      } 
     else if (data = "failed") 
     { 
      alert("Problem s prihlasením, skúste znovu."); 
      $("#login").html('Prihlásiť sa'); 
      } 
      } 
     }); 
     }return false; 
    }); 

И PHP файл на LocalServer, login.php:

if (isset($_POST['username'], $_POST['password'])){ 
$username=mysql_real_escape_string(htmlspecialchars(trim($_POST['username']))); 
$password=mysql_real_escape_string(htmlspecialchars(trim($_POST['password']))); 
$login = mysql_num_rows(mysql_query("SELECT * FROM `login` WHERE `username`='$username' AND `password`='$password'")); 
if($login != 0){ 
echo "success"; 
} 
else{ 
echo "failed"; 
} 
} 

Но что-то не так, ajax не посылает мне никаких данных. Он меняет #login на «connect ...», но ничего не происходит. Вписывание информации является правильным, и они загружаются в базу данных. Скорее всего, php не отправляет обратно никаких данных, или ajax в html не исправляет обработку данных с php. Я не знаю, где проблема. Profil.html находится в той же папке, что и index.html. Но login.php находится на локальном сервере.

HTML: index.html; PHP: login.php на локальном сервере на моем latop; Сервер: 127.0.0.1, имя базы данных db_login.

Любая помощь или помощь очень ценится.

+0

Вы проверили консоль браузера на наличие ошибок? Или, по крайней мере, проверить, отправляется ли запрос, и каков ответ? –

+0

Затем ваш запрос AJAX не отправляется, что означает, что ваш обработчик кликов не попадает. Вы используете свой код, когда DOM готов? –

+0

XMLHttpRequest не может загрузить http://127.0.0.1/app/login.php. В запрошенном ресурсе нет заголовка «Access-Control-Allow-Origin». Поэтому исходный 'null' не допускается. –

ответ

0

Во-первых, вы должны проверить, является ли запрос ajax правильно указанным в вашем php-файле. Откройте инспектор в Chrome, переключитесь на tan-сеть, затем на фильтр Emanuel xhr. После щелчка на #login вы должны увидеть новый запрос. Нажмите на нее, перейдите на вкладку ответа и вставить его содержание здесь Пожалуйста

+0

Нет ничего, пишет только «Этот запрос не имеет доступных данных ответа». Но почему ... я не знаю –

+0

Вы уверены, что запрос указывает на php-файл правильно? Получили ли вы статус ответа 200?Попробуйте повторить «что-то»; Выход(); в первой строке этого файла, а затем проверить ответ – webcitron

+0

код состояния - 200, но ответные данные: «
Предупреждение: mysql_num_rows() ожидает, что параметр 1 будет ресурсом, логическим значением в C: \ xampp \ htdocs \ app \ login.php on line
не удалось " –

0

Ваш вопрос ниже строки:

в JS:

data: {username: username, password: password}, 

в PHP:

if(isset($_POST['login'])){ 

Reason

Со стороны JS вы находитесь ssing 2 params в запросе POST: username и password, в то время как в PHP вы проверяете $_POST['login']. Вместо этого вы должны проверить на $_POST['username'] и $_POST['password'] на PHP.

Кроме того, вы используете mysql_real_escape_string(), который устарел с PHP 5.5. И вы вводите имя пользователя и пароль, которые являются как входами пользователя, так и непосредственно в запрос mysql, что приводит к серьезным проблемам безопасности, связанным с SQL Injection. Используйте PHP-MySQLi или PDO API и подготовленные операторы.

+0

Я использую вашу проблему, но инспектор - сеть - xhr напишите эту ошибку «
Предупреждение: mysql_num_rows() ожидает параметр 1, чтобы быть ресурсом, логический приведены в C: \ XAMPP \ HTDOCS \ приложение \ login.php на линии
неудавшегося» –

+0

это означает, что ваш SQL не является правильным после введения ценности. Используйте подготовленные заявления. – Rajesh

0

ОК, но зачем сначала, если это правда? Автор, пожалуйста, дайте нам заголовки запроса этого xhr от инспектора

+0

Это 'POST /app/login.php HTTP/1.1 Ведущий: 127.0.0.1 соединения: держать-жив Content-Length: 32 Accept: */* Происхождение: нулевой User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, например, Gecko) Chrome/55.0.2883.28 Safari/537.36 Content-Type: application/x-www-form-urlencoded; charset = UTF-8 Accept-Encoding: gzip, deflate, br Accept-язык: sk-SK, sk; q = 0.8, cs; q = 0.6, en-US; q = 0.4, en; q = 0.2' –

+0

Вы пропустите параметры запроса :) Пожалуйста, вставьте его здесь (максимум на вкладке запроса) – webcitron

+0

вы имеете в виду данные формы? потому что максимально вниз на вкладке reguest есть только данные формы: «username = name & password = 123456» http://imgur.com/a/88j4G –

Смежные вопросы