代码之家  ›  专栏  ›  技术社区  ›  Karol Kamiński

如何在CoffeeScript、RoR发出ajax请求后检查我的服务器是否回滚事务

  •  0
  • Karol Kamiński  · 技术社区  · 9 年前
      $.ajax
        url: "/models"
        type: "POST"
        dataType: 'json'
        data: {model: {name: "name", x: "x", y: "y"}}
    

    是否有任何方法可以检查我的服务器是否接受了此请求并保存了新元素,而无需再次发出服务器请求?

    1 回复  |  直到 9 年前
        1
  •  0
  •   Karol Kamiński    9 年前

    哦…我想通了。

    每次触发ajax请求时,它都会等待服务器响应一些数据。(在我的示例中,它是json格式的数据)

    我在coffectpt中的ajax请求现在看起来如下:

    $.ajax
      url: "/models"
      type: "POST"
      dataType: 'json'
      data: {model: {name: "name", x: "x", y: "y"}}
      success: (data) ->
        alert "Request was send to the server and server axcepted what I wanted to say … but I don't know if he do what I've told to him"
      error: (data) ->
        alert "The server says that he couldn't do what I've told him becouse of error number: #{JSON.stringify(data['status'])}"
    

    在这种情况下,最重要的是使服务器实际响应一些预期错误值。 因此,需要在Controller中进行一些更改。 我想创建一些元素,所以动作“创建”如下所示:

    def create
      @model = Model.new(model_params)
    
      respond_to do |format|
        if @model.save
          format.html  { render :nothing => true }
          format.json  { render :json => @model, :status => :ok}
        else
          format.html { ender :nothing => true }
          format.json { render json: @model.errors, status: :unprocessable_entity }
        end
      end
    end
    

    :unprocessable_entity发送错误#422