我想构建一个自定义 ajax 表单(对使用 Rails 开箱即用的解决方案不感兴趣):
$('form.ajaxForm').submit(function(e){
e.preventDefault();
var $form = $(this),
formValues = getFormValues($form),
formUrl = $form.attr('action');
$.post(formUrl, {
data : formValues,
contentType: "application/json",
success : function(data, textStatus, jqXHR){
// do success here
}
});
});
var getFormValues = function($form){
var values = {};
var valuesArray = $form.serializeArray();
for(var i = 0, max = valuesArray.length; i < max; i++){
var value = valuesArray[i];
values[value.name] = value.value
};
return values;
};
我确实想使用 Rails 3 在收到 json 请求时做出不同响应的能力,例如:
def create
@registration = Registration.new(params[:registration])
respond_to do |format|
format.html { render action: "new" }
format.json { render json: @registration.errors, status: :unprocessable_entity }
end
end
由于某种原因,Rails 在发布期间无法处理我的请求,并且不响应 json。http 标头中的内容告诉它响应 json,以及发布此数据的正确方法是什么?