我是一个JQuery / JS newb,我在使用简单的.blur()事件调用时遇到了麻烦。
基本上我有一个html表单,输入有“id ='validate'”,它们应该调用php脚本来验证数据库中表单的input元素中输入内容的存在。
任何帮助将不胜感激!
目前我收到错误:“SyntaxError:missing:在属性id @ line 6之后”[在'alert(“Called !!”),'],但如果我发表评论,那么根本没有任何反应
HTML:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src='../js/validate.js'></script>
<!DOCTYPE html>
<html>
...
<body>
...
<form method="POST" action="upload.php?t=0" class="formbox" style="float:left;" name='aform'>
<label>Category: </label><input type="text" id='validate' maxlength="30" name="category"/><br />
<input style="margin-left:35%;width:130px;" type="submit" value="Submit Article" />
</form>
...
</body>
</html>
validate.js:
$(document).ready(function(){
$('#validate').blur(function(){
$.ajax({
type: "POST",
url: "../php/validate.php",
data: aform.elements["category"].value,
success: function(msg){
alert("Category exists!");
},
error: function(){
alert("Error!");
}
});
});
});
validate.php:
<?php
include '../php/db.php';
echo "Called!";
$cat = mysqli_real_escape_string($con, $_POST['category']);
$query = mysqli_query($con, "SELECT DISTINCT * FROM Category WHERE Name='".$cat."';");
if(mysqli_num_rows($query) == 1){
echo "Category Exists!";
}else if(mysqli_num_rows($query) == 0){
echo "No Category with that name found!";
}else{
echo "Too many Categories found!";
}
?>
提前致谢!
编辑:为了将来的参考,我在引用POST数据时遇到了麻烦,我最终更改了“data:aform.elements [”category“]。value,”to“data:”cat =“+ document.querySelector( '[name =“category”]')。value,'在js文件中并在php文件中引用“$ _POST ['cat']”
答案 0 :(得分:0)
在您的代码中,
alert("Called!!"),
是错位的。
请将其删除。
由于$.ajax()
函数只需要键值对。
alert
就是功能。
您可以将其放在success
或error
功能中。
答案 1 :(得分:0)
我看到的第一个问题是传递给ajax()的对象中的alert()调用,这是无效的并且会抛出错误
答案 2 :(得分:0)
我注意到的一些事情,你的alert
函数调用不应放在ajax调用的options对象中 - ajax调用期望它的选项被定义为key : value pairs
- 如果你想要的话要设置一个已调用ajax函数的警报,您可以将其置于beforeSend
回调中 - 在发送XmlHttpRequest之前触发。代码看起来像这样:
$(document).ready(function(){
$('#validate').blur(function(){
$.ajax({
beforeSend: function() { alert("Called!!"); },
type: "POST",
url: "../php/validate.php",
data: aform.elements["category"].value,
success: function(msg){
alert("Category exists!");
},
error: function(){
alert("Error!");
}
});
});
});
另外作为附注,html元素的id属性对于该文档应该是唯一的,因此如果您在页面上的多个表单输入上使用id =“validate”,则该页面将无效html - 尝试将您的选择器更改为类名,并调用您的模糊函数,如$('.validate').blur(function() ...
此外,成功回调仅表示XmlHttpRequest已完成,未指示服务器返回了哪些数据,因此警告该类别存在,因为请求已完成可能会给您误报,更好的方法将在成功回调中使用alert(msg)
。
以下是$.ajax上查询文档的链接,该文档应该为您清除一些内容: