2014-12-15 3 views
0

По существу, я пытаюсь перенаправить мою веб-страницу при успешном входе в систему. У меня успешный вход в систему, он не перенаправляется на новую страницу позже. Он обновляет текущую страницу, на которой он включен.window.location = "location.html";

Форма, которую я использую для ввода пользователем.

<!-- Login Details --> 
    <form name = "loginForm" onsubmit = "validate(this);"> 
    <p> 
     <label for = "username"> Username: </label> 
     <input type = "text" id = "username" name = "user"/> 
    </p> 

    <p> <label for = "password"> Password: </label> 
     <input type = "password" id = "password" name = "pass" required/> 
    </p> 

    <p class = "submit"> 
     <input type = "submit" value = "Submit"/> 
    </p> 
</form> 

И теперь для его стороны javascript;

var user = form.user.value; 
var pass = form.pass.value; 
var valid = false; 

var userArray = ["admin", "kevin", "mark", "paul", "conor"];  // ("admin1", "admin2", "admin3") As many as you like - no comma after final entry. 
var passArray = ["pass", "pass1", "pass2", "pass3", "pass4"]; // ("Password1", "Password2", "Password3") the corresponding passwords; 

for (var i = 0; i < userArray.length; i++) 
{ 
    if ((user == userArray[i]) && (pass == passArray[i])) 
    { 
     valid = true; 
     //alert("Login was successful"); 
     break; 
    } 
} 

if (valid == true) 
{ 
    alert ("Login was successful"); 
    window.location = 'mainmenu.html'; 
    return false; 
} 

Я пробовал новое местоположение, используя двойные и одинарные кавычки. Ничего не работает. Цените помощь :)

+0

Protip: использовать '' === это лучшая практика. Появляется ли ваше предупреждение? Условие может не передаваться, что означает, что ваш оператор if может быть неправильным. –

+1

Отправка формы перезагружает страницу, если вы не вызываете 'event.preventDefault()' в обработчике отправки. – Barmar

+3

Кроме того, вы можете знать об этом, но если JavaScript работает на клиенте (то есть в веб-браузере), нет ничего, что мешало бы кому-то смотреть на исходный код и видеть все пароли, а также URL страницы браузер будет перенаправлен после входа в систему. – JCOC611

ответ

2

Вы отправляете форму. Вы не указали действие, поэтому оно отправляется на текущую страницу. Это происходит до того, как назначение location имеет какой-либо эффект.

С текущим подходом, чтобы исправить это return false из onsubmit (то есть функции, которая вызововvalidate), поэтому нормальное поведение формы представления отменяется.


Это говорит:

  • Собирает всю информацию аутентификации на клиенте полностью небезопасный, и вы никогда не должны делать это.
  • Внутренние атрибуты событий, такие как onsubmit, - это то, как мы делали привязку событий JS в 90-х годах. Теперь у нас есть addEventListener (см. Также preventDefault).
+0

Думал, что возвращаю false с последней строкой в ​​выражении if? Не собираюсь лежать, мы только начали Javascript, и я все еще не знаю столько об этом, сколько хотел. – BudgieBr0phy

+0

@ BudgieBr0phy - Вы - это функция 'validate', а не функция' onsubmit'. Функция 'onsubmit' - это функция с вызовом' validate' в ней. – Quentin

+0

Как мне возвратить false из функции onSubmit? – BudgieBr0phy

-1

С Mozilla Developer Network:

window.location свойства только для чтения возвращает объект Местоположения с информации о текущем местоположении документа.

И:

Всякий раз, когда новое значение присваивается объекту местоположения, документ будет загружен с помощью URL, как если бы location.assign() была вызвана с измененным URL. Обратите внимание, что настройки безопасности, такие как CORS, могут предотвратить это.

location.assign("http://www.mozilla.org"); // or 
location = "http://www.mozilla.org"; 

Это пример 1 здесь: https://developer.mozilla.org/en-US/docs/Web/API/Window.location

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