在mvc url中的ajax帖子之后这么久了

时间:2017-01-28 14:22:47

标签: javascript json ajax asp.net-mvc asp.net-mvc-4

http://localhost:53435/Blog/BlogIndex?title=blog+title&seo=seo&content=%3Cp%3Econtent%3C%2Fp%3E%0D%0A

上面的网址

当我点击保存按钮页面时刷新并且像这样的网址

我不想要它我怎么能解决它?

我的控制器代码

try
            {
                Blog addModel = new Blog();
                content = content.Replace("<p>", "").Replace("</p>", "");
                addModel.BlogPictureURL = pictureData;
                addModel.BlogContent = content;
                addModel.BlogPictureSEO = seo;
                addModel.BlogTitle = title;
                addModel.BlogDate = DateTime.Today;
                addModel.BlogViewCount = 0;
                db.Blog.Add(addModel);
                db.SaveChanges();

                var lastID = db.Blog.OrderByDescending(x => x.ID).Take(1).FirstOrDefault().ID;
                foreach (var item in Tags)
                {
                    Tags newTag = new Tags();
                    newTag.TagsName = item;
                    newTag.BlogID = lastID;
                    db.Tags.Add(newTag);
                }

                db.SaveChanges();

                return RedirectToAction("BlogIndex", "Blog");
            }
            catch
            {
                return RedirectToAction("Error", "Admin");
            }

我的ajax代码

function SaveAllData() {
        var blogFile;

        var elem = $(".dz-details").find("img");

        blogFile = elem[0].getAttribute("alt");

        var elemData = $("#tags").val();

        elemData = elemData.split(",");

        $.ajax({

            type: "POST",
            url: "/Blog/AddBlog",
            datatype: "json",
            traditional: true,
            data: {
                title: $("#title").val(),
                seo: $("#seo").val(),
                content: CKEDITOR.instances.content.getData(),
                Tags: elemData,
                pictureData: blogFile
            }

        });
}

如果我这样做没有ajax帖子就没有问题 但是用ajax做错了什么

1 个答案:

答案 0 :(得分:0)

看起来您的表单仍在执行普通表单提交而不是ajax帖子。如果您有一些javascript代码在单击表单的提交按钮时执行ajax提交,但忘记停止默认行为,即提交按钮单击上的表单提交,则会发生这种情况。从您发布的网址看起来,您的表单方法也是一个GET,它通过查询字符串提交数据。

您只需要确保不要让默认行为发生。

以下是将click事件绑定到按钮

的非限制性方法
<button type="submit" class="btn btn-primary" style="float:right" id="btnSubmit">

和js代码

function SaveAllData() {
  // your existing code for the ajax call
}
$(function(){
   $("#btnSubmit").click(function(e){
       e.preventDefault();  // This will prevent the default form submit
       SaveAllData();
   });
});

另外,如果是ajax表单提交,则返回RedirectResult是没有意义的。您可以考虑返回带有url值的json结构以导航到(如果需要)。