【问题标题】:Ajax, JQuery Validation, and MVCAjax、JQuery 验证和 MVC
【发布时间】:2017-07-31 17:26:40
【问题描述】:

我有一个似乎无法解决的问题。首先是一些可能相关的上下文。

我正在为我的软件构建一个类似 MVC(我说“喜欢”是因为我仍在学习 MVC 的工作原理)的 php 框架。我希望所有输入表单通过 ajax 将数据提交到后端控制器,该控制器路由数据并将其输入到适当的数据库中。所有的 HTML 代码都是通过 php 类生成的,而 JavaScript 则包含在 php 类中。

我遇到的问题是 ajax 函数。它一直在尝试正常提交发布请求,而我希望它异步提交。我已经让它在不同的时间点正常工作,但是当我改变框架的各个方面时它似乎中断了。我尝试了“form.preventDefault()”和“return false”的各种组合,但这似乎并不重要。验证部分有效(它不会提交无效条目。使用this 插件)。我发现 JavaScript 会自行缓存,我通过将版本号附加到文件名来解决这个问题。

这里是 ajax 代码。它向用户返回有关请求状态的消息。知道为什么它拒绝异步提交吗?

         $(document).ready(function() { 
            // Initialize form validation 
    ***old code 
$("form[name='ajaxform']").validate({ ***
         // Specify validation rules 

    ***Updated code
        $('#ajaxsubmit').on('click', function() {


        $("#ajaxform").valid();
    });
    // Initialize form validation
 $('#ajaxform').validate({ ***


    ....[omitting the validation rules for brevity]

        errorElement : 'div', 
        errorLabelContainer: '#usermessage',

    submitHandler: function(form) {
        $.ajax({
            cache   : false,
            url     : $(form).attr('action'),
            type    : 'POST',
            dataType: 'text',
            data    : $(form).serialize(),
            success : function(data) {
                var response = $.parseJSON(data);
                if(response['error']){
                    $('#usermessage').html(response['error']);
                    }else{
                    if(response['success']){
                    $('#usermessage').css({"color":"#00b300","font-weight":"bold"});
                    $('#usermessage').html(response['success']);
                    }
                    }
                },
                error   : function(err) {
                            alert(err);   
                }
            });    
    return false;
    }
    });

    });

【问题讨论】:

  • @shamelessApathy,既然验证插件是响应表单提交的,那么如果按照你说的把按钮类型改成“按钮”,你会如何触发插件呢?
  • 我刚刚找到了这个。 google.com/url?sa=t&source=web&rct=j&url=https://…。我会尝试并回复你。谢谢!

标签: php jquery ajax asynchronous jquery-validation-engine


【解决方案1】:

以下是我如何处理在尝试提交表单时遇到的问题,即使我尝试阻止 Default()。

我没有看到你的 HTML 标记,所以我不能确定。

如果你有一个

<button type='submit'>Submit</button>

改成

<button type='button'>Submit</button>

然后用javascript而不是表单提交来监听按钮的点击

【讨论】:

  • 我尝试将提交按钮更改为键入“按钮”并更新我的代码,就像它在我提供的链接中描述的那样。虽然它不再正常提交(谢谢)并且不会触发ajax功能。知道为什么吗?我会更新我的代码。
【解决方案2】:

您可以更改处理程序:

submitHandler: function(form) {

同时处理事件:

submitHandler: function(form, event) {
    event.preventDefault();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    相关资源
    最近更新 更多