0

我想构建一个自定义 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,以及发布此数据的正确方法是什么?

4

1 回答 1

1

查看Rails API 文档,我发现了这个花絮:

Rails 根据客户端提交的 HTTP Accept 标头确定所需的响应格式。

jQuery 的$.ajax调用有一个accepts设置,可用于设置此标头的值,但我相信 usingdataType会自动为您配置。

于 2012-12-31T07:03:01.987 回答