【问题标题】:ASP.NET MVC AJAX with jQuery带有 jQ​​uery 的 ASP.NET MVC AJAX
【发布时间】:2010-10-09 08:54:27
【问题描述】:

我有一个网站,每个用户的页面都显示 cmets 并允许其他用户添加 cmets。我想拥有它,以便添加 cmets 表单位于页面上,当用户添加评论时,它会添加到数据库中并使用 AJAX 显示在评论部分。我在 AJAX 和 LINQ to SQL 中使用 jQuery 来处理数据库逻辑。将如何执行此操作,以便在将评论添加到数据库后,刷新和更新 cmets 部分而不刷新页面?

【问题讨论】:

    标签: javascript jquery asp.net-mvc dom


    【解决方案1】:

    作为对 Matt 的回应,另一种提交表单数据的方法是,您可以在 jQuery.ajax 函数的“数据”字段中调用 $('#form').serialize(),而不是 JSON。这将消除对插件的需要。

    另外,我不是这方面的专家,我仍在尝试自己学习,但是当您可以将来自 ASP.NET MVC 的响应插入到页面中时,是否有必要同时拥有 POST 和 GET 请求?这将导致一个请求。不过,这种方法可能有正当理由。我猜我的应该是这样的:

        // The Controller Action should return a PartialView as response,
        // so just a user control that contains the comments. 
    function PostComment(targetUserID, commenterUserID, comment)
    jQuery.ajax({
        type: 'POST',
        data: $('#commentForm').serialize(),
        url: 'Comments/Add',
        success: function(result){ 
            $('#comments').html(result);
    
    
            }
        }
        });
    

    【讨论】:

    • 嗨 Julian - 这是一个非常好的观点 RE:将新的评论结果结合到 POST 响应中。我想这归结为你是一个 RESTful crud 纯粹主义者。就我个人而言,我会将其结合到响应中,以节省往返行程,即使某些纯粹主义者可能会提出其他异议。
    【解决方案2】:

    您需要利用 jQuery ajax 调用触发的“成功”(或“完成”)事件来触发后续的 AJAX 调用以刷新您的评论内容。这可能看起来像(有翼,未经测试):

    function UpdateComments(){
        resultHTML = jQuery.ajax({
            type: 'GET',
            url: 'Comments/List/UserID'
        }).responseText;
    
        $('#comments').html(resultHTML);
    }
    
    function PostComment(targetUserID, commenterUserID, comment)
    jQuery.ajax({
            type: 'POST',
            contentType: 'application/json; charset=utf-8',
            data: $.toJSON({review: comment, id:targetUserID, commenter:commenterUserID}),
            dataType: 'json',
            url: 'Comments/Add',
            success: function(result){
                // Only update comments if the post was successful:
                resultJson = $.evalJSON(result);
                if(resultJson['success'] == true){
                    UpdateComments();                    
                }
            }
        });
    

    编辑 JSON 代码将使用 jquery 插件 jquery-json (http://code.google.com/p/jquery-json/)

    【讨论】:

    • url 应该是:'/Comments/Add' ...否则 url 会被附加到当前 url,你很可能会得到 404。
    • 事实上,使用 MVC 助手之一来实际生成路径可能会更好,因为如果您的网站作为嵌套应用程序运行在另一个网站下IIS
    猜你喜欢
    • 2010-09-22
    • 1970-01-01
    • 2014-07-10
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多