【问题标题】:Issue using remote method in jquery validation在 jquery 验证中使用远程方法的问题
【发布时间】:2013-04-19 06:52:19
【问题描述】:

我正在关注this 文章以验证我的表单

我的问题是当我必须使用 remote 方法时,例如remote: "check-username.php"

由于远程方法的documentation 对我来说不是很清楚,我会知道:

我需要如何在 php 脚本中构造我的 json 输出?

【问题讨论】:

    标签: javascript jquery ajax validation jquery-validate


    【解决方案1】:

    要使用remote 的默认方法,远程页面必须以字符串值"true""false" 进行响应。

    有效成功)必须是:

    echo "true";
    

    无效失败):

    echo "false"; // this can be any false. eg: 0 , "" , NULL.
    

    响应将被评估为 JSON。

    要应用错误消息,而不是默认的远程响应无效(“false”),将输入名称添加到验证器选项messages 对象,如下所示。

    rules:{
        username:{
            remote: "check-username.php"
        }
    },   
    messages:{
        username:{
            remote: jQuery.format('{0} is already in use, please choose a different name')
        }
    }
    

    【讨论】:

    • 我收到一个错误/警告“jQuery.format”已被弃用。改用 jQuery.validator.format。这对我有用。谢谢
    • 终于找到正确答案了!!问题出在服务器响应中,正确的方法是返回或回显“true”或“false”谢谢!
    • 抱歉迟到了评论......所以如果电子邮件已经存在,发送'false'?我有点困惑..
    【解决方案2】:

    您不需要 JSON。你可以放任何文字。例如你可以

    echo "success";
    

    验证通过,输入验证信息如下:

    echo "Username already exists.";
    

    验证失败。

    在你的回调中做这样的事情:

    remote: {
               url: "check-username.php" ,
               type: "post" ,
               data: {
                  username: function() {
                  return $("#username").val();
               },
               complete: function(data){
                    if( data.responseText != "success" ) {
                       alert(data.responseText);
                       //handle failed validation
                    }
                 }
             }
    

    【讨论】:

    • 谢谢@argonius。我实施的变化比你的建议小。我返回 true 而不是 success。
    • "true" 是必须的,不是"success",如果字段名是'username',也不需要data:{}
    • 正确答案是蝠鲼,服务器应以“真”或“假”响应
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多