HTML表单模糊调用PHP的JQuery函数调用

时间:2013-10-03 12:56:22

标签: javascript php jquery html blur

我是一个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']”

3 个答案:

答案 0 :(得分:0)

在您的代码中,

alert("Called!!"),

是错位的。

请将其删除。

由于$.ajax()函数只需要键值对。

alert就是功能。

您可以将其放在successerror功能中。

答案 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上查询文档的链接,该文档应该为您清除一些内容: