如何通过jQuery提交表单并刷新PartialView
Stackoverflow做得很好,提交一条评论,然后使用jQuery在屏幕上刷新它是怎么做的?如何通过jQuery提交表单并刷新PartialView,jquery,forms,Jquery,Forms,Stackoverflow做得很好,提交一条评论,然后使用jQuery在屏幕上刷新它是怎么做的? <div class="post-comments"> <div id="comments-1122543" class="display-none comments-container"> <div class="comments"> </div>
<div class="post-comments">
<div id="comments-1122543" class="display-none comments-container">
<div class="comments">
</div>
<form id="form-comments-1122543" class="post-comments"></form>
</div>
<a id="comments-link-1122543" class="comments-link" title="add a comment to this post">add comment</a>
</div>
我在剖析代码来学习
看起来是这样的:在下面的html中,链接单击事件由jQuery绑定,以将textarea加载到动态表单中提交按钮是如何连接的,数据是如何发送到服务器的?
<div class="post-comments">
<div id="comments-1122543" class="display-none comments-container">
<div class="comments">
</div>
<form id="form-comments-1122543" class="post-comments"></form>
</div>
<a id="comments-link-1122543" class="comments-link" title="add a comment to this post">add comment</a>
</div>
添加注释
还有javascript:
var j = function (s, v) {
var r = $("#form-comments-" + s);
if (r.length > 0) {
var u = '<table><tr><td><textarea name="comment" cols="68" rows="3" maxlength="' + q;
u += '" onblur="comments.updateTextCounter(this)" ';
u += 'onfocus="comments.updateTextCounter(this)" onkeyup="comments.updateTextCounter(this)"></textarea>';
u += '<input type="submit" value="Add Comment" /></td></tr><tr><td><span class="text-counter"></span>';
u += '<span class="form-error"></span></td></tr></table>';
r.append(u);
r.validate({
rules: {
comment: {
required: true,
minlength: 15
}
},
errorElement: "span",
errorClass: "form-error",
errorPlacement: function (y, z) {
var A = z.parents("form").find("span.form-error");
A.replaceWith(y)
},
submitHandler: function (y) {
disableSubmitButton($(y));
g(s, $(y))
}
});
var t = $("#comments-" + s + " tr.comment:first td.comment-actions").width() || -1;
t += 9;
r.children("table").css("margin-left", t + "px")
} else {
var w = "no-posting-msg-" + s;
if ($("#" + w).length == 0) {
var x = $("#can-post-comments-msg-" + s).val();
v.append('<div id="' + w + '" style="color:maroon">' + x + "</span>")
}
}
};
var j=函数(s,v){
var r=$(“#表格注释-”+s);
如果(r.长度>0){
var u=“”;
u+='';
u+='';
r、 附加(u);
r、 证实({
规则:{
评论:{
要求:正确,
最小长度:15
}
},
错误元素:“span”,
errorClass:“表单错误”,
错误位置:函数(y,z){
var A=z.parents(“form”).find(“span.form错误”);
A.替换为(y)
},
提交者:函数(y){
禁用提交按钮($(y));
g(s,$(y))
}
});
var t=$(“#comments-”+s+“tr.comment:first td.comment actions”).width();
t+=9;
r、 children(“table”).css(“左边距”,t+“px”)
}否则{
var w=“无过账消息-”+s;
如果($(“#”+w).length==0){
var x=$(“#可以发表评论msg-”+s).val();
v、 附加(“”+x+“”)
}
}
};
您可以使用AJAX将表单发送到服务器,并使用JavaScript轻松更新页面内容
如果您使用的是jQuery,则有一种用于使用HTTP POST方法发送表单以及序列化表单数据的方法:
$.post('/url', $('#formId').serialize(), function () {
// do something after submiting the form i.e. update current page layout
});
这就是我最终复制功能的方式
<div id="issueComments">
<% Html.RenderPartial("CommentHistory", Model.Comments); %>
<a id="comments-link-<%= Html.Encode(Model.Issue.IssueId) %>" class="comments-link" title="add a comment to this issue">Add comment</a>
<div id="issue-comment-form">
<form id="form-comments-<%= Html.Encode(Model.Issue.IssueId) %>" class="post-comments" method="post">
<table><tr><td><textarea class="wmd-ignore" name="comment" cols="68" rows="3" id="form-comment-<%= Html.Encode(Model.Issue.IssueId) %>"></textarea>
<input type="submit" value="Add Comment" /></td></tr><tr><td><span class="text-counter"></span>
<span class="form-error"></span></td></tr></table>
</form></div>
</div>
添加注释
jQuery
<script type="text/javascript">
$("#form-comments-<%= Html.Encode(Model.Issue.IssueId) %>").submit(function(evt) {
var frm = $("#form-comments-<%= Html.Encode(Model.Issue.IssueId) %>");
evt.preventDefault();
var action = frm.attr("action");
var serializedForm = frm.serialize();
var comments = jQuery.trim($("#form-comment-<%= Html.Encode(Model.Issue.IssueId) %>").val());
if (comments.length < 1)
return;
// POST HERE
$.ajax({
type: "POST",
url: "/Issue/" + "SaveIssueComment",
dataType: "html",
data: {
comment: comments,
issueId: issueId
},
success: function(v) {
$("div#issueComments").html(v);
},
error: function(v, x, w) {
//Error
}
});
});
</script>
$(“#表单注释-”)。提交(函数(evt){
var frm=$(“#表格注释-”);
evt.preventDefault();
var action=frm.attr(“action”);
var serializedForm=frm.serialize();
var comments=jQuery.trim($(“#表单注释-”)).val();
如果(注释长度<1)
返回;
//张贴在这里
$.ajax({
类型:“POST”,
url:“/Issue/”+“SaveIssueComment”,
数据类型:“html”,
数据:{
评论:评论,
issueId:issueId
},
成功:功能(五){
$(“发行建议”).html(v);
},
错误:函数(v、x、w){
//错误
}
});
});