表单不提交加载回调

Posted

技术标签:

【中文标题】表单不提交加载回调【英文标题】:Form does not submit with load callback 【发布时间】:2013-11-16 00:42:38 【问题描述】:

我在 iframe 中加载页面作为表单提交的回调时遇到了困难。当我在没有回调的情况下提交表单时,提交工作正常,但是当我在提交表单后尝试加载页面时,表单没有提交。

以下作品:

$("#new_explanation").on('submit', function(ev)
);

以下不起作用:

$("#new_explanation").on('submit', function(ev)
    $('#lastExplanation').load("http://localhost:3000/lasturl", function()
      alert('hi world');
    );
    return false;
);

html中的iframe标签:

<iframe  id="lastExplanation"></iframe>

我认为 return false 会阻止表单提交,但我不确定如何在不刷新页面的情况下执行此操作。非常感谢您的帮助。让我知道是否需要发布任何 html 或 rails。

【问题讨论】:

HTML 中的iframe 元素是什么? 【参考方案1】:

我看到你使用 jQuery。为什么不依赖 jQuery 的方法 $.ajax。它支持 GET 和 POST 请求。

$.ajax(
  type: "POST",
  url: "some.php",
  data:  name: "John", location: "Boston" 
).done(function( msg ) 
  alert( "Data Saved: " + msg );
);

只需从表单中收集数据,将其转换为 json 对象并将其传递给 data 属性。

【讨论】:

【参考方案2】:

    基本表单提交意味着刷新浏览器。 如果您不想刷新,则必须进行 AJAX 表单提交。

    当然return false 是防止表单提交。

    我的建议和 Krasimir 的一样,你要做的就是触发一个 AJAX 表单提交,然后在 done() 事件句柄的函数中编写任何你想做的事情。

    李>

顺便说一句,永远不要使用load() 方法和外部url 作为参数,它不会起作用。

希望这能有所帮助。

【讨论】:

【参考方案3】:

如果你只是想在iframe 中加载一个页面,你只需要把iframe 的属性“src”。你可以这样做:

http://jsfiddle.net/2bZDy/

$("#new_explanation").on('submit', function(ev)
        $('#lastExplanation').attr("src", "http://localhost:3000/lasturl");
        return false;
    );

【讨论】:

以上是关于表单不提交加载回调的主要内容,如果未能解决你的问题,请参考以下文章

使用 submit() 方法提交表单时的回调

[Layui]上传文件带进度条+表单提交功能优化

[Layui]上传文件带进度条+表单提交功能优化

Drupal 8表单提交Ajax表单后的回调

layui+tp5表单提交回调

jQuery提交表单而不重新加载页面