从JQuery调用PHP文件以检查唯一标识符

时间:2013-05-24 14:38:57

标签: php jquery html ajax postgresql

我正在尝试这样做http://web.enavu.com/tutorials/checking-username-availability-with-ajax-using-jquery/

在用户填写某些表单时检查某些id的可用性,但我使用的是postgresql而不是mysql ...我不知道我做错了但是我认为我的php文件有问题它一定是一个我无法看到的小错误,因为我正试图从它发出警报而没有任何反应,我总是得到“instituto is avaliable”,即使它是可用的(我试图改变顺序)返回1到0,反之亦然,在php文件中)仍然是相同的响应。似乎php没有做任何事情。

如果你能帮助我,我会非常感激。这是我的代码:

HTML

<input id="nombre_insti" class="widearea" type="text" name="nombre"> 
        </div>
        <div id='avaliability'>   </div>

JS

$(document).ready(function() {

    var checking_html = 'Checking...';

    $('#nombre_insti').change(function(){
            $('#avaliability').html(checking_html);
            check_availability();
    });
});


function check_availability(){

    //get the instituto
    var instituto = $('#nombre_insti').val();

    //use ajax to run the check
    $.post("check.php", { instituto: instituto },
        function(result){
            //if the result is 1
            if(result == 1){
                //show that the instituto is available
                $('#avaliability').html(instituto + ' is Available');
            }else{
                //show that the instituto is NOT available
                $('#avaliability').html(instituto + ' is not Available');
            }
    });

}

PHP

<?php
    $nombre_insti=$_POST['nombre_insti'];
    $result = pg_query("SELECT nombre_institucion 
                        FROM instituciones
                        WHERE
                        nombre_institucion='$nombre_insti'");
    <script type="text/javascript">alert("This alert is not showing");</script>

    if(pg_num_rows($result)==0){
        echo 0;
        return 0;
    }else{
        echo 1;
        return 1;
    }
}?>

3 个答案:

答案 0 :(得分:1)

试试这个:

$nombre_insti=$_POST['instituto'];

删除PHP脚本中的js代码

答案 1 :(得分:1)

如果你没有得到回应,那是因为你有一个致命的PHP错误而你已经关闭了display_errors

错误的原因在于:

<script type="text/javascript">alert("This alert is not showing");</script>

你的PHP中间有HTML。

您可以使用echo或关闭HTML周围的PHP标记来更正它。

echo '<script type="text/javascript">alert("This alert is not showing");</script>';

?>
    <script type="text/javascript">alert("This alert is not showing");</script>
<?php

答案 2 :(得分:1)

您可以使用验证插件的remote method

var rp = "<?php echo base_path; ?>";
var validator = $("#registerForm").validate({
    rules: {
        "firstname" : {
            required : true                    
        }, 
        "lastname" : {
            required : true                    
        },
        "email" : {
            required : true,
            email : true, 
            remote: rp + 'user/emailExists'
        },
        "username" : {
            required : true,
            remote: rp + 'user/usernameExists'          
        }
    },
    messages: {
        "username" : {
                remote : jQuery.format("username not Available")
           },
        "email" : {
            remote : jQuery.format("email not Available")
        }
    }
});