Jquery Ajax.begin';成功时不要打电话
在ASP.NET MVC 3应用程序中,我使用Ajax.BeginForm将写入的文本发布到控制器Jquery Ajax.begin';成功时不要打电话,jquery,asp.net-mvc,asp.net-mvc-3,asp.net-ajax,Jquery,Asp.net Mvc,Asp.net Mvc 3,Asp.net Ajax,在ASP.NET MVC 3应用程序中,我使用Ajax.BeginForm将写入的文本发布到控制器 @using (Ajax.BeginForm("Post", "Forum", new {threadId = Model.Thread.Id }, new AjaxOptions { OnSuccess = "PostReply" })) { <div id="reply-area"> <h3 style="border-bottom:1px soli
@using (Ajax.BeginForm("Post", "Forum", new {threadId = Model.Thread.Id }, new AjaxOptions { OnSuccess = "PostReply" }))
{
<div id="reply-area">
<h3 style="border-bottom:1px solid black">POST REPLY</h3>
<span id="post-error" class="error-message"></span>
<textarea rows="1" cols="1" id="post-textarea" name="Content"> </textarea>
<input type="submit" class="button" value="Submit"/>
</div>
}
在javascript中,我有这个
function PostReply(isRequestSuccessed) {
alert("asdasd");
if (isRequestSuccessed==false) {
$("#post-error").html("Please Try Again");
}
else
{
$("#post-error").html("");
}
}
问题是Javascript的函数没有启动,如果不读取警报,我的浏览器(Firefox)会返回弹出窗口来下载应用程序/json文件。
这里出了什么问题?请确保在页面中包含以下脚本:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
并且您已经在web.config中启用了不引人注目的javascript:
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
这就是为什么
Ajax.
帮助程序(如Ajax.BeginForm
)能够工作。给表单一个Id,然后将提交事件附加到一个单独的javascript文件中(使用jQuery)并在那里处理帖子,这是一个更好的解决方案
html:
Javascript:
$("#formid").submit(function (e) {
e.preventDefault();
if ($(this).valid()) {
$.ajax({
type: "POST",
url: $(this).attr('action'),
data: $(this).serialize(),
success: function (result) {
//do your success logic
}
});
}
});
这里是我找到的100%修复的最佳解决方案 感谢“达林·迪米特罗夫”并指出了很多这方面的问题。但再加上我知道这可能很简单但这让我 我的错误是我认为
jquery.validate.unobtrusive.js
及
当它们不在的时候,它们是一样的。确保使用Nuget中的“jquery.UnobtrusiveAjax.js”
请参考此文件,谢谢,我忘了附上jquery.unobtrusive-ajax.js)))谢谢你,达林。我几乎发疯了,却发现我使用的共享视图缺少jquery.unobtrusive-ajax.js参考。你可以从我需要的下载jquery.unobstrusive-ajax.js,在我更新到新的jquery版本时进行更新。在这种情况下,你可以使用
Html.beginfound
version“File not found”不是最好的解决方案,但还有一个问题
$("#formid").submit(function (e) {
e.preventDefault();
if ($(this).valid()) {
$.ajax({
type: "POST",
url: $(this).attr('action'),
data: $(this).serialize(),
success: function (result) {
//do your success logic
}
});
}
});
jquery.validate.unobtrusive.js
jquery.unobtrusive-ajax.js