Jquery Validate Remote失败。无法提交表格

时间:2011-09-07 05:14:03

标签: jquery jquery-validate

我曾经使用过工作表单验证,包括远程检查用户名是否可用。我们已经在script.js文件中添加了很多其他的javascript,并且最近在某些时候,这个文件的远程部分破了。 validate,new_name字段只检查一个表单字段。它是必需的(工作)并且必须可用(不起作用)。

这是jQuery:

        $('#nickname_form').validate({
        rules: {
            new_name: {
                required: true,
                remote: {
                    url: '/api/screenname_unique/',
                    type: 'post'
                }
            }
        },
        messages: {
            new_name: {
                required: 'Please choose a Forum Username.',
                remote: 'That Username is already taken or contains invalid characters.'
            }
        }
    });

正如我上面说的那样,以上工作,没有任何变化。我已经检查了script.js文件的其余部分并且没有出现任何错误。此外,在网站中,我们没有在任何地方看到JS错误。如果我删除上述代码的远程部分,则所需的检查工作,并且当字段中有值时,表单将提交。

如果远程到位,表单将不会提交,并且远程调用的ajax响应是true还是false,则不会显示jQuery validate错误消息。这是remote调用的页面。就它给定给定值的响应而言,它工作得很好:

<?php
header('Content-type: application/json');

//get the post value
$screen_name = $_POST['new_name'];

//get their member_id
$member_id = $this->EE->session->userdata['member_id'];

//return false if no screen_name provided
if((!$screen_name) || (!$member_id)) {
    echo json_encode(false);
    exit;
} else { //there is a screen_name

    //Regex Check for valid chars
    $valid = !preg_match('/[^a-z0-9_ -]/i',trim($screen_name));

    if (!$valid) {
        echo json_encode(false);
        exit;
    }

    //SQL
    $results = $this->EE->db->query("SELECT member_id FROM exp_members WHERE screen_name = '$screen_name' and member_id <> '$member_id' limit 1");

    if ($results->num_rows() > 0) {
        echo json_encode(false);
    } else {
        echo json_encode(true);
    }

}

&GT;

我不确定从哪里开始。想法?

2 个答案:

答案 0 :(得分:2)

我使用的是JQ 1.5.1,刚刚更新到1.6.3,现在表单工作正常。我想也许远程和1.5.1有问题?谢谢你们。

答案 1 :(得分:0)

您没有使用远程选项发送数据。

试试这个。它对你有帮助。

$("#nickname_form").validate({

rules: {
 Name: "required",
 email: {
   required: true,
   email: true
 },

 username:
 {
    required: true,
    remote: {
    url: "http://www.xyz.com/checkusername.php",
    type: "post",
    data: {
      username: function() {
        return $("#username").val();
      }
    }
  }
 }
},

messages: {

 Name: "Please enter name.",
 email: {
   required: "Email address require.",
   email: "Please enter valid email address."
 },

 username:
 {
    required: " Please enter username.",
    remote: " Username is already exists please choose other."
 }
  },

errorPlacement: function(error, element) { 
                error.appendTo(element.next());
            },  

submitHandler: function() {  
        sendmail();
        }, 
success: function(label) {
        label.html("&nbsp;").addClass("valid_small");                   
        } 

});

在服务器端不要在远程选项中使用json。 打印真或假。

   <?php 
    {
$screen_name = $_POST['username'];
$member_id = $this->EE->session->userdata['member_id'];

    $results = $this->EE->db->query("SELECT member_id FROM exp_members WHERE screen_name = '$screen_name' and member_id <> '$member_id' limit 1");
    if(count($dataArray)>0)
    {
        echo "false";die;
    }
    else
    {
        echo "true";die;
    }    
  }
  ?>
相关问题