我有一个文本字段类型的文本,当我输入一个盘子的数量时,如果它存在,它必须显示一个警报,但事件键盘不起作用。
JS
$('#mat').keyup(function(){
var matric = $('#mat').val();
$.ajax({type: "POST",
url: "compruebaVeh.php",
data: "matric="+matric,
success:function(data) {
alert(data);
if(data=='ok'){
alert('this car already exists');
}
}
});
});
PHP
<?php
$mat=$_POST['matric'];
ini_set('display_errors',1); error_reporting(E_ALL);
require('conecta.php');
$cSQL="select matricula from vehiculos;";
$stmt=$oConni->prepare($cSQL) or die($oConni->error);
//$stmt->bind_param('s',$_POST['matric']);
$stmt->execute();
$stmt->bind_result($matricula);
while ($stmt->fetch()) {
if($matricula==$mat){
echo 'ok';
}
}
$stmt->close();
?>
答案 0 :(得分:2)
在php代码中,作业$_POST['matric']=$mat;
应该颠倒
$mat = $_POST['matric'];
您的脚本也可能多次回显ok
,具体取决于数据库中的数据,循环应该变为:
while ($stmt->fetch()) {
if($matricula==$mat){
echo 'ok';
break;
}
}
所以现在你可以用js回调和“ok”进行比较。
答案 1 :(得分:1)
我要解决这个问题,所以你不要像你设置的那样锤击你的后端。一个question on SO already deals with this
//setup before functions
var typingTimer; //timer identifier
var doneTypingInterval = 1000; //time in ms, 1 second for example
var licenceSearch = $("#mat");
//on keyup, start the countdown
licenceSearch.keyup(function () {
clearTimeout(typingTimer);
if (licenceSearch.val) {
typingTimer = setTimeout(doneTyping, doneTypingInterval);
}
});
//user is "finished typing," do something
function doneTyping() {
alert(licenceSearch.val());
// ajax stuff can happen here.
}
答案 2 :(得分:0)
您将要使用新的Promise interface JQuery方法,如下所示:
$('#mat').on('keyup', function (event) {
var matric = $(event.target).val();
var response = $.post("compruebaVeh.php", {data: matric});
response.done(function (data) {
alert(data)
});
response.fail(function () {
alert('error')
});
});
以下是一个工作密钥提示示例:http://fiddle.jshell.net/vHTZN/
答案 3 :(得分:0)
在php代码中创建一个退出语句,然后重试。
while ($stmt->fetch()) {
if($matricula==$mat){
echo 'ok';
}
}
exit;
答案 4 :(得分:0)
在大多数情况下,id #mat在html代码中被定义了多次,密钥也可能有效,但是url可能不正确,并且它不会触发成功分支。除此之外,我看到$ _POST ['matric'] = $ mat;这不太对劲。可能你想要$ mat = $ _POST ['matric']。您可以使用firebug控制台检查javascript实际发生的事情以及php脚本返回的内容