2013-06-12 110 views
0

我想通过AJAX提交表单。当我提交表单时,它应该发送一个ajax并使用id stepTwo淡入到div中,并淡出当前的div。我正在使用jQuery 1.8.0,并且在提交时我的控制台中出现此错误。Rails AJAX表单提交

NS_ERROR_FAILURE: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE)  [nsIDOMWindow.getComputedStyle] 
[Break On This Error] 

...=[]),o&&(e=" "+e);while(e){k=!1;if(j=B.exec(e))e=e.slice(j[0].length),k=d.push({... 

这里是我的HTML:

<div id="stepOne"> 
<%= form_for @program do |f| %> 
    <div> 
    <label for="exerciseName">Title For Your Program</label> 
    <%= f.text_field :title, :name => "exerciseName", :required => "required", :maxlength => "40" %> 
    </div> 
    <div> 
    <label for="exerciseName">Detailed Info For Your Program</label> 
    <%= f.text_area :details %> 
    </div> 

<%= f.submit "Next Step", :class => "exbuttons button-small red rounded3", :id =>"stepOneButton" %> 
<% end %> 
</div> 

这里是我的控制器

#POST /节目 #POST /programs.json 高清创建 @program = Program.new(PARAMS [:progeram]) @ program.user_id = current_user.id

respond_to do |format| 
    if @program.save 
    if request.xhr? 
     render @program 
    else 
     redirect_to @program 
    end 
    else 
    if request.xhr? 
     render @program 
    else 
     flash[:error] = "Program could not be added" 
     redirect_to new 
    end 
    end 
end 
end 

这是我的JavaScript文件

function stepOne(){ 
    $('#new_program').submit(function(event){ 
     event.preventDefault(); 
     var f = $(this); 
     f.find('input[type="submit"]').attr("disabled", true); 
     $.ajax({ 
      type: f.attr("method"), 
      url: f.attr("action"), 
      data: f.serialize(), 
      complete: function(){ 
       f.find('input[type="submit"]').attr("disabled", false); 
      }, 

      success : function(data){ 
       console.log(data); 
       $(this).fadeOut(); 
       $('#stepTwo').delay(400).fadeIn(); 
      }, 

      error : function(xhr, status){ 
       console.log(status); 
      } 
     }); 


    }); 
} 

回答

0

的NS_ERROR_FAILURE似乎表明,该URL是错误的或轨道控制器击中一个错误。

检查脚本调用的URL实际上是否正确,如果url正确,可以运行它而不使用ajax来查看由rails返回的错误页面。

您也似乎没有使用respond_to,因此可能不需要包含它。