开发者

php jquery remote validate problem

  <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"
        }
    }
});
});

My 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";
}
 ?>

My problem might due to the response format it is not true or false, but i print out whole verifyCap code. Anyone can help?


An ajax request does an get by default instead of a post. Change:

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

to

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

besides that, do not use $_REQUEST to get your data. Use $_GET instead.

You could also add some settings your ajax request:

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


You're receiving the whole verifyCap.php code because your PHP isn't interpreted by your web server.

In your verifyCap.php you are using the short tag notation (<? //code ?>). Not all server uses this php extension, and it is considered deprecated. If your webserver doesn't use this extension, then your code is considered as an XML document, as XML document always start with <? <!-- some XML here --> ?>.

Use <?php //code ?> and your problem should be fixed.

Also, following @XpertEase answer isn't a bad idea either.

Edit: More info on PHP short tags Are PHP short tags acceptable to use? (via @XpertEase)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜