ASP.NET MVC AJAX与jQuery
问题描述:
我有一个网站,每个用户的页面显示评论,并允许其他用户添加评论。我想拥有它,因此添加评论表单位于页面上,当用户添加评论时,它会添加到数据库中,并使用AJAX注释部分显示。我使用jQuery来处理AJAX和LINQ to SQL来处理数据库逻辑。如何做到这一点,以便在评论添加到数据库后,评论部分刷新和更新而不刷新页面?ASP.NET MVC AJAX与jQuery
答
您需要利用jQuery ajax调用激发的'success'(或'complete')事件来触发随后的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/)
答
的回应马特,另一路要提交表单数据,而不是JSON,可以在jQuery.ajax函数的'data'字段中调用$('#form')。serialize()。这将消除对插件的需求。
此外,我不是这方面的专家,仍然试图自己学习它,但是当您可以将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);
}
}
});
的URL应该是:“/评论/添加” ......否则,URL被附加到当前的网址,你将最有可能获得404 – 2010-01-20 15:35:08
事实上,使用其中一个MVC帮助程序来实际生成路径可能会更好,因为如果您的站点在IIS中的另一个网站下作为嵌套应用程序运行,则领导/还会抛出一些东西 – Matt 2010-10-01 14:30:15