jquery.post()没有重定向到Rails中查看,但是被控制器处理?

时间:2011-11-26 14:49:10

标签: javascript jquery ruby-on-rails

My Rails应用程序使用 jquery.post()方法将“可点击”地图标记中的一些数据发送到我的应用程序中的控制器,如下所示。

虽然表单字段正常运行(即发布到控制器并重定向到视图),但可点击的地图标记仅POST到控制器并且不会重定向到指定的视图

enter image description here

帖子的服务器响应如下所示

//--> THIS IS THE JQUERY 'POST' FROM THE MAP CLICK EVENT. DOES NOT REFRESH THE VIEW
Started POST "/index" for 127.0.0.1 at 2011-11-26 09:22:20 -0500
  Processing by SearchController#index as HTML
  Parameters: {"search"=>"The Hilton Club New York"}
Rendered text template (0.0ms)
Completed 200 OK in 5ms (Views: 4.2ms | ActiveRecord: 0.0ms)

//--> THIS IS THE RAILS FORM POST. THIS REDIRECTS TO 'index.html.haml'
Started POST "/index" for 127.0.0.1 at 2011-11-26 09:24:50 -0500
  Processing by SearchController#index as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"zjnYqbCB2iEob9g25310tYgZRRuF/WPTwplf92Rho0o=", "search"=>"Hilton Hotel, Avenue of the Americas, New York, NY", "commit"=>"GO"}
Rendered text template (0.0ms)
Completed 200 OK in 7ms (Views: 5.9ms | ActiveRecord: 0.0ms)

Javascript看起来像这样

$.post("/index", {search: place.name},"data","html")

Rails控制器代码如下所示

def index
  respond_to do |format|
    format.html {render :text => "You searched for : #{params[:search]}"}
  end
end

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

这是因为您只回复format.html

添加一个format.js(或format.json,我忘了哪一个)并编写一些代码来处理这种情况。

答案 1 :(得分:1)

“$ .post()”的第三个参数应该是一个函数,一个在HTTP请求完成时调用的函数。该库将返回的内容传递给该函数。

没有函数,无论服务器返回什么都被忽略;图书馆不知道如何处理它。

即便如此,正如@Esailija在评论中指出的那样,如果您的服务器正在发布重定向,那么它首先不适合ajax。