0

我正在尝试使用 ajax 通过我的 rails 应用程序调用方法。我想知道是否有一种方法可以通过 ajax 检索信息,无论该方法是成功通过还是调用另一个函数。

$.ajax({ 
  type: "GET/POST", // which ever will be better 
  url: "",
  success: function(form) {
    //something i can put here to call a method in rails to retrieve variables from rails
  },
  error: function() {
    //some code
  }
});

我必须对控制器做些什么才能让它工作?

def call_sms
  @text_number = params[:phone_number]
  @text_message     = params[:text_message].to_s
  @sms = ShortMessagingService.new

  if @sms.send(@text_number, @text_message)       
    @sms_message = @sms.sent?

    respond_to do |format|
      format.js {render :nothing => true}
    end
  else 
    false
  end
end
4

2 回答 2

1

我不确定您要完成什么,但一般来说,在 Rails 中处理 Ajax 请求的一种好方法是发回 JavaScript,它在到达时执行。例如,如果您将控制器更改为:

def call_sms
  @text_number = params[:phone_number]
  @text_message     = params[:text_message].to_s
  @sms = ShortMessagingService.new

  @sms.send(@text_number, @text_message)       

  respond_to do |format|
    format.js
  end
end

并创建对应的视图 call_sms.js.erb

<% if @sms.sent? %>
  alert("All is well!");
<% else %>
  alert("Something's wrong.");
<% end %>

一旦服务器的响应到达您的浏览器,就会弹出一个警告框。

success或者,您可以使用在函数回调中处理的 JSON 对象进行响应$.ajax

于 2013-09-20T20:32:34.190 回答
0

由于未发送消息是一个已知错误,我将在成功块内处理它。您可以将json对象从服务器传递到客户端并将变量放入其中。在这里,我发送一条消息,说明true是否成功发送了短信。

$.ajax({ 
  type: "GET/POST", // which ever will be better 
  url: "",
  success: function(data) {
     if (data.message == "true"){
      //message sent
     } else{
      //message was not send 
     }
  },
  error: function() {
    // handle if ajax request fails for unknown reasons
  }
});

def call_sms
  @text_number = params[:phone_number]
  @text_message     = params[:text_message].to_s
  @sms = ShortMessagingService.new
  @sms.send(@text_number, @text_message)
  @sms_message = @sms.sent?

   respond_to do |format|
        # you can pass other variables the same way as message
        format.js {render :json => {:message => @sms_message}}
  end
end
于 2013-09-20T20:53:49.290 回答