在Rails中构建自定义ajax表单时,发送给控制器以使其响应Json的正确数据是什么?



我想构建一个自定义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不能在post期间处理我的请求,并且不响应json。什么在http头告诉它响应json,什么是正确的方式来发布这些数据?

在查看Rails API文档时,我发现了这个花语:

Rails从HTTP Accept决定所需的响应格式客户端提交的报头。

jQuery的$.ajax调用有一个accepts设置,可以用来设置这个头的值,但我相信使用dataType会自动为你配置这个

相关内容

  • 没有找到相关文章

最新更新