我想通过AJAX提交表单。当我提交表单时,它应该发送一个ajax并淡入id为stepTwo的div,并淡出当前div。我正在使用jQuery 1.8.0,当我提交时,我在控制台中出现此错误。
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 / program #POST /programs.json def创建 @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 :(得分:0)
NS_ERROR_FAILURE似乎表明URL错误或者rails控制器发生了错误。
检查脚本调用的URL是否实际正确,如果url正确,可以在没有ajax的情况下运行它以查看rails返回的错误页面。
您似乎也没有使用respond_to,因此可能不需要包含它。