【问题标题】:php jquery remote validate problemphp jquery远程验证问题
【发布时间】:2011-06-10 09:10:16
【问题描述】:
  <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 代码。任何人都可以帮忙吗?

【问题讨论】:

  • 这是您对表单进行的唯一验证吗?还是还有其他服务器端验证?

标签: php jquery validation


【解决方案1】:

默认情况下,ajax 请求执行获取而不是发布。变化:

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

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

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

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

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

【讨论】:

  • AJAX 请求使用GET,但并非所有请求都使用。您也可以将其设置为POST。您应该编辑您的答案以反映这一点,因为它有点模棱两可。
  • 好的,我都改成 GET 还是一样的问题
  • @Clement:我可能正在编辑我的帖子,而你正在评论:)
  • 它不会验证 txtcaptcha
【解决方案2】:

您将收到整个 verifyCap.php 代码,因为您的 PHP 没有被您的 Web 服务器解释。

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

使用&lt;?php //code ?&gt;,您的问题应该会得到解决。

此外,遵循@XpertEase 的回答也不是一个坏主意。

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

【讨论】:

猜你喜欢
  • 2011-10-23
  • 1970-01-01
  • 1970-01-01
  • 2011-07-07
  • 1970-01-01
  • 2013-04-19
  • 2012-03-30
  • 2011-07-31
  • 1970-01-01
相关资源
最近更新 更多