0

我在 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>

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

4

3 回答 3

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属性。

于 2013-11-05T07:45:44.310 回答
1
  1. 基本表单提交意味着刷新浏览器。如果您不想刷新,则必须进行 AJAX 表单提交。

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

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

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

希望这能有所帮助。

于 2013-11-05T07:56:57.833 回答
0

如果你只是想在里面加载一个页面iframe,你只需要把你的iframe. 你可以这样做 :

http://jsfiddle.net/2bZDy/

$("#new_explanation").on('submit', function(ev){
        $('#lastExplanation').attr("src", "http://localhost:3000/lasturl");
        return false;
    });
于 2013-11-05T07:59:42.850 回答