【问题标题】:How to validate jQuery/AJAX input value in external php file and return back the result?如何验证外部 php 文件中的 jQuery/AJAX 输入值并返回结果?
【发布时间】:2011-10-09 10:09:49
【问题描述】:

我的表单输入中有一个名为验证码的变量。

在我的 javascript 文件中,我有这个:

  var captcha = $("input#captcha").val();
                    $.ajax({
                            type: "GET",
                            url: "includes/process.php",
                            data: captcha,
                            success: function() {

                              alert('Captcha is OK');

                            }
                          });

在我的 process.php 文件中,我有这个:

<?php

// Begin the session
session_start();

// To avoid case conflicts, make the input uppercase and check against the session value
// If it's correct, echo '1' as a string
if(strtoupper($_GET['captcha']) == $_SESSION['captcha_id'])
    echo 'true';
// Else echo '0' as a string
else
    echo 'false';

?>

我的问题是,无论我在输入中输入什么,它总是通过。我怎么能例如将 captcha_id 的值返回到我的 javascript 文件中,以便我可以检查它,例如在 javascript 中使用警报?

我认为我的 php 文件是错误的,因为无论我在验证码中输入什么内容(我已经使用 alert(captcha); 在 var captcha = $("input#captcha").val(); 之后进行了检查,并且它会提醒正确的值。

所以,我假设成功:...部分是错误的

process.php 中的 php 比较部分。要执行 ajx 的成功部分,它必须返回什么?

感谢您的建议。

已解决!至少对我来说是这样;)

这对我有用:

$.ajax({
                                type: "GET",
                                url: "includes/process.php",
                                data: "captcha=" + captcha,
                                success:function(data){
                                    if(data=='true')
                                    alert("OK");

                                else
                                alert("not ok");

                                }
                          });

process.php 保持不变。

谢谢大家,你们帮了我很多。

【问题讨论】:

    标签: php javascript jquery ajax validation


    【解决方案1】:

    一旦有 ajax 响应可用,就会调用成功函数。在您的情况下,它是真还是假。所以,你应该检查一下:

    success: function(response) {
        if (response == 'true' )
            // captcha valid
        else
            alert ('wrong');
    }
    

    【讨论】:

      【解决方案2】:

      我相信你的 ajax 调用是错误的:

      data:{captcha:yourValueFromYourInput}
      

      那么服务器端你有$_GET['captcha']=yourValumeFromYourInput

      【讨论】:

      • 打败我。你也可以data: "captcha=" + captcha。原始代码的方式是它只是传递一个值,但您需要命名参数才能在后端访问它。
      【解决方案3】:

      您没有在成功回调中捕获来自服务器的响应

      success:function(data){
      if(data=='true')
      alert("OK");
      
      else
      alert("not ok");
      
      }
      

      您可能还需要在您的 ajax 调用中发送 data

      data:{captcha:captcha},
      

      【讨论】:

      • 算我一个,我也很好奇......因为你的回答是正确的,我这边 +1
      • 好的,非常感谢这对我有用的人检查我的原始帖子我已经更新了。
      • 谢谢,3nigma,你的解决方案奏效了。我没有投票-1,因为我不能这样做,当我尝试投票时,它说只有注册用户才能投票。无论如何,感谢您的帮助。
      • 我只能选择最好的答案,所以在我看来,你的答案最好,还有这个数据:“captcha=" + captcha;
      猜你喜欢
      • 2015-12-27
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多