我在将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 width="100%" id="lastExplanation"></iframe>
我认为返回false是阻止表单提交,但我不确定如何在没有页面刷新的情况下执行此操作。非常感谢帮助。如果我需要发布任何HTML或rails,请告诉我。
答案 0 :(得分:2)
我看到你使用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 属性。
答案 1 :(得分:1)
基本表单提交意味着刷新浏览器。 如果您不想刷新,则必须提交AJAX表单。
当然return false
是对表单提交的预防。
我的建议和Krasimir一样,你所要做的就是触发一个AJAX表单提交,然后在done()
事件句柄的函数内编写你想要做的任何事情。
BTW,永远不要将load()
方法与外部网址一起用作参数,它将不起作用。
希望这可以提供帮助。
答案 2 :(得分:0)
如果您只想在iframe
中加载页面,则只需将iframe
的属性设为“src”即可。你可以这样做:
$("#new_explanation").on('submit', function(ev){
$('#lastExplanation').attr("src", "http://localhost:3000/lasturl");
return false;
});