表单不提交加载回调
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;
);
【讨论】:
以上是关于表单不提交加载回调的主要内容,如果未能解决你的问题,请参考以下文章