php jquery远程验证问题

时间:2011-06-10 09:10:17

标签: php jquery validation

  <script type="text/javascript">
  $().ready(function() {
 jQuery.validator.addMethod("captcha", function(value, element)  {
       $.ajax({ url: "verifyCap.php",
                type: "GET",
                data: "txtCaptcha="+value,
                success:        
                     function(msg) { 
                         if(msg == "true")
                               return true;  // already exists
                         return false; 
                        }
                  });
    },"");
// validate signup form on keyup and submit
$("#signupForm").validate({
    rules: {
        title: "required",
        contactname: "required",
        email: {
            required: true,
            email: true
        },
        comment: "required",
        txtCaptcha:{
            required: true,
            captcha: true
        }
    },
    messages: {
        contactname: "Please enter your contact name",
        email: "Please enter a valid email address",
        comment: "Please enter your system requierment",
        txtCaptcha: {
            required:"Please enter verification code",
            captcha: "The verification code is incorrect"
        }
    }
});
});

我的verifyCap.php

<?php
 session_start ();
 if ($_SERVER ["REQUEST_METHOD"] != "GET")
  die ( "You can only reach this page by posting from the html form" );
 if (($_GET ["txtCaptcha"] == $_SESSION ["security_code"]) && (! empty ( $_GET ["txtCaptcha"] ) && ! empty ( $_SESSION ["security_code"] ))) {
   echo  "true";
 } else {
     echo "false";
}
 ?>

我的问题可能是由于响应格式不正确或错误,但我打印出整个verifyCap代码。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

默认情况下,ajax请求会执行get而不是post。变化:

if ($_SERVER ["REQUEST_METHOD"] != "POST")

if ($_SERVER ["REQUEST_METHOD"] != "GET")

除此之外,请勿使用$_REQUEST来获取您的数据。请改用$_GET

您还可以添加ajax请求的一些设置:

   type: "POST",
   data: "your params here",

答案 1 :(得分:0)

您正在接收整个verifyCap.php代码,因为您的Web服务器不会解释您的PHP。

在您的verifyCap.php中,您使用的是短标记符号(<? //code ?>)。 并非所有服务器都使用此php扩展,并且它被视为已弃用。如果您的网络服务器不使用此扩展,那么您的代码将被视为XML文档,因为XML文档始终以<? <!-- some XML here --> ?>开头。

使用<?php //code ?>,您的问题应该得到解决。

另外,关注@XpertEase回答也不错。

编辑:有关PHP短标记Are PHP short tags acceptable to use?的更多信息(通过@XpertEase)