<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代码。有人可以帮忙吗?
答案 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)