1

我有一个非常复杂的帖子,使用 jquery 验证和一个 AJAX 帖子,它从服务器获取 JSON 响应并将其放入 jqGrid 中......但似乎我的 onsuccess 在任何时候都不会被调用......

$(document).ready(function () {
    $("#formSearchByMRN").validate({
        rules: {
            MRN: { required: true, minLength: 6 }
        },
        messages: {
            MRN: 'Please Enter a Valid MRN'
        },            
        submmitHandler: function (form) {
            e.preventDefault();
            animateLoad();
            debugger;                
            var theURL = form.action;
            var type = form.methd;
            var data = $(this).serialize();
            $.ajax({
                url: theURL,
                type: type,
                data: data,
                dataType: "json",
                success: function (result) {
                    debugger;
                    var data = result;
                    if (data.split(':')[0] == "Empty record") {
                        $("#list").unblock();
                        $('#resultDiv').html('<b><p style="color: #ff00ff">' + data + '</p></b>');
                        setTimeout(function () {
                            $('#resultDiv').html("");
                        }, 10000);
                    }
                    else {
                        binddata(data);
                    }
                }
            });
            return false;
        }
    });
});

看来我永远不会进入submmitHandler。事件虽然我设法访问我的服务器端函数并且它确实返回,但它会提示我的 UI 保存一个包含 JSON 结果的文件......不好。
我要在我的 AJAX 以错误的方式发布之前验证我的表单吗?有人对验证 AJAX 帖子的最佳实践有什么建议吗?

更新... MARK R. 这就是我尝试的。好像我从来没有进入成功功能......我怀疑我并不是真的通过 ajax 发布,而是在做一个完整的帖子。我不明白为什么。

$('#submitMRN').click(function () {
    $("#formSearchByMRN").validate({
        rules: {
            MRN: { required: true, minLength: 6 }
        },
        messages: {
            MRN: 'Please Enter a Valid MRN'
        }
    });
    if ($('#submitMRN').valid()) {
        $("#list").block({ message: '<img src="../../Images/ajax-loader.gif" />' });
        $.ajax({
            url: $('#submitMRN').action,
            type: $('#submitMRN').method,
            data: $('#submitMRN').serialize(),
            dataType: "json",
            success: function (result) {
                debugger;
                var data = result;
                if (data.split(':')[0] == "Empty record") {
                    $("#list").unblock();
                    $('#resultDiv').html('<b><p style="color: #ff00ff">' + data + '</p></b>');
                    setTimeout(function () {
                        $('#resultDiv').html("");
                    }, 10000);
                }
                else {
                    binddata(data);
                }
            }                    
        });
    }
});
4

1 回答 1

1
    $('#SubmitButton').click(function (){
        //Check that the form is valid
        $('#FormName').validate(); 
        //If the Form is valid 
        if ($('#FormName').valid()) { 
            $.post(...........
        }
        else { 
            //let the user fix their probems
            return false; 
        }
    });//$('#SubmitButton').click(function (){ 
于 2012-11-29T19:20:46.173 回答