Search code examples
javascriptjqueryruby-on-rails-3cross-domainjsonpath

Handling jsonp in rails 3 controller


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?


Solution

  • 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