【问题标题】:How do I submit a form without refreshing the entire page如何在不刷新整个页面的情况下提交表单
【发布时间】:2014-08-10 14:53:52
【问题描述】:

我已经对此进行了一段时间的研究,我发现的所有示例都包含文本输入字段和 php。

我创建了一个社区,它有一个“Like-button”,单击一次显示更大的数字,再次单击它会下降 -1,它就像一个魅力。但我不喜欢刷新部分,它把一切都搞砸了,从顶部开始。

我已经尝试了大量的 Ajax/Jquery 编码,但无法阻止“重新加载部分”。 我不知道我是否有任何代码要发布,因为我从不保存任何永远无法使用的毫无价值的代码。

但是,表单是这样开始的,并且包含“提交图像”:

@using (Ajax.BeginForm("Like", "Home", FormMethod.Post, null, new { id = "LikeForm" }))
{
...
<input type="image" src="../Images/star.png" name="submit" />
...
}

结果显示在附近。

所有内容都发送到 ActionResult Like(),它将所有内容保存在数据库中。结果稍后会显示在视图中。我希望这部分没有什么不寻常的地方。

再一次,我查看了许多示例,但没有一个对我有用,我的信息主页位于 http://api.jquery.com/ 和 stackoverflow。在这种情况下没有任何收获。

【问题讨论】:

  • 你使用的是ajax表单,所以它不应该刷新整个页面
  • 如果我每次被问到这个问题时只有一美元。你找到答案了吗?
  • 我尝试了所有不同类型的表单类型。每个结果都是一样的。 EthernalHour,如果您阅读我的问题,您会发现我已经搜索过了。如果我没记错的话,使用文本输入是有效的,但我没有使用它。

标签: jquery html asp.net-mvc form-submit


【解决方案1】:

如果你之前尝试过使用 jQuery,我希望你的代码看起来像这样:

$('#LikeForm').on('submit', function() {
  // do AJAX stuff here
});

这已经足够接近了,只是缺少了阻止表单仍然以传统方式提交的部分。如果您还没有尝试过,请尝试这样做:

$('#LikeForm').on('submit', function(e) {
  e.preventDefault();
  // do AJAX stuff here
});

它的作用是阻止表单元素的默认行为(即,通过重新加载页面提交自身),并且只执行 AJAX 操作。

【讨论】:

  • 这基本上是要走的路,但我想补充一点,因为看起来你正在使用 ASP.NET MVC,如果你想走这条路,你会想要删除“Ajax.BeginForm”并改用“Html.BeginForm”。
  • 我已经尝试了上面代码的许多组合,包括捕获表单的#id 的提交按钮的#id,我从 api.jquery.com 找到了很多示例。然而,他们都没有成功调用我的 actionresult 并执行“魔术”。
  • 也许您的 AJAX 请求没有发送到正确的 URL。您是否从表单中获得了正确的操作结果 URL?您可以像这样在事件处理程序中执行此操作:$(this).attr('action').
  • 我试过这个: $.ajax({ type: "POST", url: $form.attr('action')... 我相信这个 URL 是对的,试了大约 3-5组合。
  • @Varg 以及您在更改之前的脚本是什么?为什么不复制粘贴并添加 e.preventDefault()?
猜你喜欢
  • 1970-01-01
  • 2022-10-02
  • 2011-10-17
  • 1970-01-01
  • 1970-01-01
  • 2019-11-12
  • 2019-12-21
  • 2012-07-23
  • 1970-01-01
相关资源
最近更新 更多