【问题标题】:Creating jQuery Validation rules using PHP使用 PHP 创建 jQuery 验证规则
【发布时间】:2014-09-29 16:49:42
【问题描述】:

我正在使用 jQuery 验证插件。每,http://jqueryvalidation.org/remote-method,一个回调用于发送额外的数据(即用户名)。

var myObj={
    rules: {
        email: {
            required: true,
            email: true,
            remote: {
                url: "check-email.php",
                type: "post",
                data: {
                    username: function() {
                        return $( "#username" ).val();
                    }
                }
            }
        }
    }
};

$( "#myform" ).validate(myObj);

完美运行!但是现在,我不想硬编码myObj 对象,而是使用PHP 来创建它。请注意,我下面的示例脚本非常简单,并且不涉及验证插件。

这样做的一种方法是直接创建 JavaScript,就像我为 myObj1 所做的那样。但是,有人告诉我,由于安全和故障排除问题,永远不要使用 PHP 动态创建 JavaScript。相反,我应该将 JSON 从服务器传递到客户端。

所以,我尝试为myObj2 这样做,但是,显然 JSON 不能包含 JavaScript,并且它不会解析。

使用 PHP 动态创建 jQuery 验证规则的最佳方法是什么?

<?php
$myID='myID';
if(isset($_GET['task'])) {
    header('Content-Type: application/json');
    exit("{'data':{'getValue':function() {return $( '#{$myID}' ).val();}}}");
}
else {
    ?>

<!DOCTYPE html>
<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js" type="text/javascript"></script>
        <script>
        console.log(window,location);
            <?php echo("var myObj1={'data':{'getValue':function() {return $( '#{$myID}' ).val();}}}");?>

            $(function() {
                alert(myObj1.data.getValue());

                $.get(location.href+'?task=getJSON',function (myObj2){
                    alert(myObj2.data.getValue());
                    },'json');

            });
        </script>
    </head>
    <body>
        <input id="myID" type="text" value="Hello" />
    </body>
</html>

    <?php
}
?>

【问题讨论】:

  • 我得问问。 为什么你需要使用php来创建这个?从我的角度来看,这没有多大意义。
  • @Ohgodwhy。我有自己的 PHP 类,它在服务器端验证数据。它还能够创建 jQuery 验证插件对象。这样,我就不用维护两套验证脚本了。
  • 所以首先使用echo 来构造具有正确值的页面。

标签: javascript php jquery json jquery-validate


【解决方案1】:

“使用 PHP 动态创建 jQuery 验证规则的最佳方法是什么?”

没有“最好”的方法。由于 PHP 在服务器上构建页面(包括 JavaScript),而 jQuery 验证插件仅在浏览器中运行,我不明白您的问题。如何使用 JavaScript 的 ajax 检索参数比使用 PHP echo 首先将这些参数放入页面中更安全,发送到浏览器之前? p>

无论您如何构建页面,JavaScript 代码在进入浏览器时将/应该看起来完全相同。

<script>
    $(function() {
        $( "#myform" ).validate( <?php echo .... ;?> );
    });
</script>

【讨论】:

  • 那么,你觉得用PHP动态创建JS可以吗?
  • @user1032531,为什么不呢?所有 PHP 都在页面完全构建的服务器上执行被发送到浏览器。从浏览器的角度来看,它与静态 HTML 文件没有什么不同。
  • 我一直使用 PHP 动态创建 jQuery,并且我有一个创建表单验证规则和消息的特定类,所以我根据经验知道它可以正常工作。
  • 在我头疼的时候,可以展示一下你是如何构建这个的吗?
  • @MikeMiller,没有什么可以向您展示的了,代码“sn-ps”功能不适用于 PHP。这个答案一般解释了如何在构建页面时使用 PHP 为 JavaScript 编写对象文字。如果您有问题,please post it as a question,以便您获得具体帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-26
  • 1970-01-01
  • 2014-02-21
  • 1970-01-01
  • 2012-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多