Jquery Ajax.begin';成功时不要打电话

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

在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 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