jQuery远程验证无法在ASP.net项目中运行

时间:2014-06-13 16:10:40

标签: jquery asp.net jquery-validate

我似乎无法弄清楚如何在我的表单中触发远程验证。我最终需要做的是在用户点击提交之前验证MySQL数据库中不存在值,这样他们就会立即知道存在问题。目前,我甚至没有尝试与数据库交谈,网络方法只返回false.ToString();

表单验证工作正常,但远程验证从不在后面的代码中触发我的断点,我不知道我缺少什么。以下代码片段已从实际代码中减少(表单上还有六个以上的必需项,但我没有显示它们或与验证它们相关联的JS),但它与我正在使用的代码相同用于概念证明。我正在发送的JSON字符串在AJAX调用中被强制执行,但是一旦我使用它,它将使用实际的用户输入,它将是JSON.stringify-ed。

如果它有用,我可以发布一个小提琴,这样你就可以看到整个代码(显然AJAX不起作用)。

HTML / ASP.NET:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="create._Default" %>

<!DOCTYPE html>
<html>    
    <head>
    <meta charset="utf-8">
    <title>PCBClient</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <link href="Styles/codiqa.ext.min.css" rel="stylesheet">
    <link href="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.css" rel="stylesheet">
    <link href="http://jquery.bassistance.de/validate/demo/css/screen.css" rel="stylesheet">
    <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.js"></script>
    <script src="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.js"></script>
    <script src="Scripts/codiqa.ext.min.js"></script>
    <script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.12.0/jquery.validate.js"></script>
    <script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.12.0/additional-methods.js"></script>
    <script src="Scripts/pcbclient.js"></script>
</head>
<body>
    <div data-role="page" data-control-title="Create" id="pageCreate" class="events">
        <div data-theme="a" data-role="header">
             <h2>
          Create
      </h2>
        </div>
        <div data-role="content">
            <form id="formEvent_create" action="">
                <div data-role="fieldcontain" data-controltype="radiobuttons">
                    <fieldset data-role="controlgroup" data-type="horizontal" data-mini="true">
                        <legend>Type of PCBID Entry:</legend>
                        <input id="radio1" name="radio_pcbids" value="rdo_pcbid_single" type="radio">
                        <label for="radio1">Single PCBID</label>
                    </fieldset>
                </div>
                <div data-role="fieldcontain" data-controltype="textinput" class="pcbid_selections" tabindex="1">
                    <label for="pcbid_single">Single PCBID *</label>
                    <input name="pcbid_single" id="pcbid_single" class="create_group" placeholder="52759" value="" type="text" data-mini="true">
                </div>
                <div data-role="fieldcontain" data-controltype="textinput" class="eventType" style="display: none;">
                    <label for="eventType_create"></label>
                    <input name="eventType_create" id="eventType_create" placeholder="" value="Creation" type="hidden">
                </div>
                <input type="submit" data-inline="true" data-icon="arrow-l" data-iconpos="left" value="Back" class="back">
                <input type="submit" data-inline="true" data-icon="plus" data-iconpos="left" value="Submit">
                <input type="submit" data-inline="true" data-icon="delete" data-iconpos="left" value="Clear">
            </form>
        </div>
        <div id="Result">Create</div>
    </div>
</body>
</html>

JS(pcbclient.js):

$("#formEvent_create").validate({
    submitHandler: function (form, event)
    {
        console.log($(this));
        isFormValid(form, event);
    },
    rules: {
        pcbid_single: {
            required: true,
            digits: true,
            rangelength: [3, 6],
            remote: {
                url: "Default.aspx/pcbidCheck",
                type: "post",
                data: '{"pcbid": 52759}',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg)
                {
                    $("Result").text("\nThe PCBID does not exist in the database\nThe query returned: " + msg.d);
                }
            }
        }
    },
    messages: {
        pcbid_single: "Please enter a valid PCBID with 3-6 digits."
    }
});

代码隐藏(Default.aspx.cs):

using System;
using System.Web.Services;

namespace create
{
    public partial class _Default : System.Web.UI.Page
    {
        [WebMethod]
        public static string pcbidCheck(string pcbid)
        {
            return false.ToString();
        }
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

更新:我无法在SO或其他来源的任何地方找到这方面的实际示例,我也无法自己解决这个问题,也没有任何支持论坛那里的jQuery Validation似乎响应了帮助请求(除了SO),所以我退回了&amp;踢。我将在Submit上执行两个单独的AJAX调用,一个用于验证PCBID(它是我们的MySQL数据库中的唯一整数值​​),并且在接收到该回调时,要么处理或不处理具有另一个AJAX调用的后续事件数据取决于第一次AJAX调用的结果。

如果有人读到这个并且有一个使用jQuery验证的远程验证的ASP.NET示例,我很乐意看到它。我仍然非常希望能够进行模糊远程验证,以便用户立即知道他们输入的PCBID整数值是否存在问题。但是,在某些时候我必须继续推进项目,我花了几天时间试图解决这个问题。

0 个答案:

没有答案