【问题标题】:Call specific function from remote PHP in jQuery Validate's remote method在 jQuery Validate 的远程方法中从远程 PHP 调用特定函数
【发布时间】:2016-07-05 15:35:12
【问题描述】:

我正在使用 jQuery Validate 插件在我的注册页面上进行字段验证。

我目前在我的验证 JS 中有这段代码,用于检查输入的用户名是否已经存在:

"remote": {
    url: "../assets/php/checkUsername.php",
    type: "post",
    data: {
        username: function() {
            return $('#register-form :input[name="username"]').val();
        }
    }
}

checkUsername.php 基本上根据输入的用户名的存在返回真或假。这一切正常,但我想优化它。

现在我有 core.php 文件,它上面已经有名为 account_exists($username) 的函数。这个函数基本上也根据给定用户名的存在返回真或假。

我的问题是,我怎样才能完全摆脱 checkUsername.php 而使用 account_exists 文件中的 account_exists 函数?

core.php 显然包含更多内容,所以我不确定如何告诉我的验证脚本从core.php 调用特定函数。

【问题讨论】:

  • 仅供参考,您不需要匿名函数:data: { username: $('#register-form :input[name="username"]').val() }
  • 您可以在文件开头使用 get 进行检查吗? if(isset($_GET['checkUsername'])){ account_exists(); }
  • 您将数据发送到 PHP 脚本,该脚本会告诉 PHP 脚本您要使用哪个函数并从中返回信息。您可以将您的函数放在一个案例语句中以促进这一点。 switch($_POST['function']) { case 'username'....
  • JS 无法执行 PHP 代码。您只能向服务器发出 ajax 请求,这意味着您必须将您的 JS 代码指向您的 .php 文件。
  • @JayBlanchard 有没有办法在不改变我的 core.php 的情况下解决这个问题?我只想编辑我的验证 JS。

标签: javascript php jquery jquery-validate


【解决方案1】:

您可以传递另一个参数,以便 core.php 知道您想要做什么

"remote": {
            url: "../assets/php/core.php",
            type: "post",               
            data: {
                action: 'check_account',
                username: function() {
                    return $('#register-form :input[name="username"]').val();
                }
            }
        }

当然,如果 action=='check_account',您还必须修改 core.php,以便它执行所需的代码:

if ($_POST['action']=='check_account')
{
...do something...
}

【讨论】:

  • 您这里唯一的问题是您没有正确更改数据语句,因此答案根本错误。
  • @JayBlanchard,它会起作用的。请参阅此处的第二个示例:jqueryvalidation.org/remote-method
  • 致问题和答案的 OP:您不需要将字段的值作为 data 参数的一部分发送,因为正在验证的字段的值已经由默认。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-25
  • 2015-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-01
相关资源
最近更新 更多