Handling jsonp in rails 3 controller

2019-01-23 18:54发布

问题:

I want my controller action to handle jsonp requests from jquery $.getJSON. In my controller action i have the following respond_to block:

respond_to do |format|
  format.html { render json: {:items_by_tag => @tagged_item_list}}
  if params[:callback]
        format.js { render :json => {:items_by_tag => @tagged_item_list}.to_json, :callback => params[:callback] }
  else
        format.json { render json: {:items_by_tag => @tagged_item_list}}
  end
end

But I'm getting SyntaxError:invalid label when i call the url from $.getJSON. My url is of the form http://myservice.com?param1=a&param2=b&callback=?.
What is the problem with my code which is causing jsonp to fail?

回答1:

respond_to do |format|
  format.html { render json: {:items_by_tag => @tagged_item_list}}
   if params[:callback]
     format.js { render :json => {:items_by_tag => @tagged_item_list.to_json}, :callback => params[:callback] }
   else
    format.json { render json: {:items_by_tag => @tagged_item_list}}
   end
 end