表单不提交加载回调

时间:2013-11-05 07:41:46

标签: jquery forms iframe callback

我在将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,请告诉我。

3 个答案:

答案 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)

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

  2. 当然return false是对表单提交的预防。

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

  4. BTW,永远不要将load()方法与外部网址一起用作参数,它将不起作用。

    希望这可以提供帮助。

答案 2 :(得分:0)

如果您只想在iframe中加载页面,则只需将iframe的属性设为“src”即可。你可以这样做:

http://jsfiddle.net/2bZDy/

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