Значение из окна запроса при нажатии клавиши ESC

#php #javascript #ajax

#php #javascript #ajax

Вопрос:

У меня есть эта простая функция

 function Login()
{
var x=prompt("Please enter your name","");
var xmlhttp;
if (window.XMLHttpRequest)
  {// Използваните браузъри
  xmlhttp=new XMLHttpRequest();
  }
else
  {// Кой ли ползва тези версии..
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
    xmlhttp.open("GET","login.php?u=" x,true);
    xmlhttp.send();
    }
  

Проблема заключается в том, что пользователь решает выйти из окна запроса, нажав ESC.Может ли кто-нибудь объяснить мне, что именно происходит с переменной x в этом случае.Я прихожу к выводу, что ему присваивается значение ‘null’, а под null я подразумеваю строку, потому что когда я проверяю с

 If(!is_null($u))
  

мой скрипт не работает, но если я заменю это на

 If($u!='null')
  

тогда все работает просто отлично, так что не мог бы кто-нибудь объяснить мне, что на самом деле происходит со значением окна запроса при выходе из него с помощью нажатия ESC?

Ответ №1:

x получит null значение, когда пользователь отменит запрос, поэтому:

 var x=prompt("Please enter your name","");
if (x === null) {
    // User canceled
}
  

Живой пример

Ответ №2:

Оно возвращается так, как если бы вы нажали «Отмена».

Оно null не в виде строки ..

 alert( prompt('') === null );
  

будет предупреждать, true если вы нажмете Esc кнопку отмены

Комментарии:

1. Тогда почему, когда я получаю значение x в файле PHP и выполняю проверку

2. @Leron, значение является фактическим null . но вы неявно преобразуете его в строку, поскольку добавляете его в единицу, когда выполняете "login.php?u=" x . В javascript попробуйте alert(typeof null) и alert(typeof ('' null) ) . Так что да, на стороне PHP вы получите "null" в виде строки.