来自iFrame的Rails中的JQuery回调问题

时间:2011-09-01 17:28:20

标签: jquery ruby-on-rails-3

当我使用带有Rails表单的iFrame时,我遇到了无法触发回调的问题。我所做的是动态创建表单的iFrame:

$('#mapMain').append('<iframe id="saveAreaForm"  />');
$('#saveAreaForm').attr('src', "areas/new");

这是表格代码:

= simple_form_for(@area, :remote => true, :html => {  :id => 'create_area_form' }) do |f|

  .field
    = f.label :name
    %br
    = f.text_field :name
  -#.field
  -#  %br
  -#  = f.association :area_group

  .field
    = f.text_field :pointsTxt
    %br
  .actions
    = f.submit
    = link_to 'Cancel', '#', {:id => 'cancel_save'}

然后我添加一个回调函数来监听动作(它运行没有错误),我尝试了不同数量的函数参数:

 $('#saveAreaForm').contents().find('#create_area_form').load(function () {
            $('#saveAreaForm').contents().find('#create_area_form').bind('ajax:success', function(e, data, status, xhr) {
                alert("success!");
            }).
            live('ajax:loading', function() {
                alert("loading!");
            }).live
            ('ajax:complete', function(dr) {
                alert("complete!");
            }).live
            ('ajax:error', function() {
                alert("error!");
            });
        });

然后我输入表单并按提交。以上事件都没有被触发但控制器动作被调用(我已经使用了bind和live)并且在FireBug中我得到了响应:

enter image description here

我在另一个地方使用回调(对于链接而不是表单提交)并且工作正常。

我唯一可以想到的是iFrame没有返回回调,因为当我分配上面的回调时,我引用了我正在使用的id。

1 个答案:

答案 0 :(得分:1)

有可能尚未加载iframe。您是否考虑过在iframe中设置回调并从内部调用父级?