Хорошо, здесь я вижу кучу вопросов.Во-первых, вы пытаетесь выполнить асинхронную операцию в синхронном контексте.
Отказ от ответственности: я не PHP человек (mysql_query
кажется PHP?), Поэтому, если вы пытаетесь это сделать, я, возможно, не ваш парень.Если это , а не , то есть, если вы ожидаете, что mysql_query
будет функцией, вам нужно будет определить это где-то еще.
Давайте начнем с console.log()
ing каждой вещи:
console.log
вашего $result
сразу после его (возможно) генерирования.Что это говорит?Я собираюсь догадаться , это «неопределено» или «ноль», поскольку запросы к базе данных почти всегда будут асинхронными. console.log
ваш input.value
.Это то, что вы думаете, должно быть?Я не могу сказать вам, сколько раз я совершал такие глупые поступки, как «myDiv» с орфографической ошибкой, как «my-div» или что-то в этом роде.Поскольку «username» не является стандартным элементом DOM, я очень надеюсь, что вы хотели бы сделать что-то вроде document.querySelector('#username')
(по идентификатору) или document.querySelector('input[name=username]')
(по имени). - Наконец, я на самом деле не парень БД, но ваш синтаксис SQL смущает меня (другие пользователи: не стесняйтесь называть меня здесь идиотом!).Вы передаете строковый литерал, который выглядит в
users
таблице WHERE username = username
.Однако в этом и заключается проблема (при условии, что в вашей таблице действительно есть столбец «username»), я считаю, что я буду искать только тех пользователей, чье имя пользователя буквально «username». Другими словами, если чтовведите в поле ввода не совсем «имя пользователя», это не удастся. То, что вы вместо этого хотите сделать, я считаю, что-то вроде этого:
//firstly, let's assume mysql_query is an async JavaScript function that you've defined.
mysql_query(`SELECT * FROM users WHERE username = ${input.value}`, function(err, response){
if(err){
alert('ERROR CHECKING NAMES!');
}else if (response.length){
//assume that if the query returns anything, that means it found a matching (==duplicate) name
alert('NAME ALREADY EXISTS!');
}else{
//do nothing!
}
});
Я также был бы очень осторожен, так как часто бывает «вежливо» не вызывать это событие при каждом триггере keyup
, а вместо этого делать что-то подобное"отменить функцию:
myTimer = null;
someThing.onkeyup = function(e){
if(myTimer){
//myTimer was previously defined. Cancel its sending and then
clearInterval(myTimer)
}
//start a new timer
setTimeout(function(){
doSomeAPICall()
},500)//or whatever milliseconds
}
Я думаю, что здесь у вас может быть немного большая проблема, поскольку вы немного смешиваете синтаксис PHP и JS и называете его Python.