2015-02-09 2 views
1

У меня есть запрос Ajax, который выглядит, как этот« г п » в боевой готовности для JQuery Ajax HTML

$(document).ready(function() { 
    $(document).on('click', '#submit', function() { 
     var UserName = $('#username').val(); 
     var PassWord = $('#password').val(); 
     console.log(UserName); 
     $.ajax({ 
      type: 'POST', 
      url: 'ajax/Login.php', 
      dataType: "text", 
      data: { 
       username: UserName, 
       password: PassWord 
      }, 
      success: function(data) { 
       alert(JSON.stringify(data)); 
       window.location='pages/mainpage.php'; 
      }, 
      error: function(data) { 
       alert('Login Error'); 
       //window.location='../index.php'; 
      } 
     }); 
    }); 
}); 

и мой РНР как этот

$username = mysql_real_escape_string($_POST['username']); 
$password = mysql_real_escape_string($_POST['password']); 

if (isset($username)) { 
    $stmt = $dbh->prepare("SELECT * FROM userlist_tbl WHERE username = ? "); 
    $stmt->bindValue(1, $username); 
    $stmt->execute(); 
    $selected_row = $stmt->fetch(PDO::FETCH_ASSOC); 
    if ($selected_row['username'] === $username) { 
     if ($selected_row['password'] === $password) { 
      $_SESSION['login_user'] = $username; 
      echo "Welcome ".$username; 
     }else{ 
    echo "Password incorrect"; 
} 
    } 
}else{ 
    echo "Username is empty"; 
} 

Когда я не положить что-нибудь в имени пользователя я ожидаю, что оповещение будет Username is empty так же, как когда пароль пуст, предупреждение должно быть Password incorrect, но я получаю "\r\n\", но если поместить некоторые из них в имя пользователя, например John, он будет предупреждать Welcome John"\r\n\". Почему это происходит? Как сделать это оповещением Username is empty, когда имя пользователь пуст же пароль любой идея будет принята ..

+0

У вас есть что-нибудь еще после этих «эхо»? Попробуйте 'die()' или 'exit()' после них. –

+0

попытался выйти из того же результата, но когда я пытаюсь умереть, это предупреждение только '' "' sir @MihaiIorga – guradio

+0

Попробуйте использовать trim для удаления пробелов: 'alert ($ .trim (JSON.stringify (data))) ;, или, еще лучше, вернуть объект JSON с сообщением в качестве значения. Таким образом, не может быть лишних пробелов вокруг границ ответа. –

ответ

0

Попробуйте это: в АЯКСЕ раздел dataType: "text", изменения dataType: "json", и серверный код РНР следующая : он может работать

//put this function top of this page 
    ob_start(); 

    $username = mysql_real_escape_string($_POST['username']); 
    $password = mysql_real_escape_string($_POST['password']); 
     $json=""; 
      if (isset($username)) { 


     $stmt = $dbh->prepare("SELECT * FROM userlist_tbl WHERE username = ? "); 
      $stmt->bindValue(1, $username); 
      $stmt->execute(); 
      $selected_row = $stmt->fetch(PDO::FETCH_ASSOC); 
      if ($selected_row['username'] === $username) { 
       if ($selected_row['password'] === $password) { 
        $_SESSION['login_user'] = $username; 
        $json.="Welcome ".$username; 
       }else{ 
      $json.="Password incorrect"; 
     } 
      } 
     }else{ 
      $json.="Username is empty"; 
     } 
    ob_end_clean(); 
    echo json_encode($json); 

?> 
0

меняет isset к !empty исправил проблему

+0

им жаль, что он исправит все, что я только что ошибался. .. я меняю 'isset' на'! empty', он исправлен, он ведет себя как то, что я хочу ... @RoryMcCrossan в чем разница между 'isset' и'! empty' – guradio

+0

Используйте ссылку для редактирования по вашему вопросу, чтобы добавить дополнительные Информация. Кнопка «Ответ на сообщение» должна использоваться только для полных ответов на вопрос. –

+0

@JanAagaardMeier сэр это действительно исправить проблему i jsut изменить 'isset' на'! Empty', может быть, есть разница между двумя, поэтому он работает сейчас – guradio

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