Outputting jSON in a rails app

前端 未结 3 1555
我寻月下人不归
我寻月下人不归 2021-02-04 12:34

ok, rails 3 new developer here.

I want my jquery to be able to get a json object from the rails 3 application for projects. Here is my controller.

def yo         


        
相关标签:
3条回答
  • 2021-02-04 13:03

    You can set the Accept: application/json header for real REST, or you can add the format to the URL for quick hackery:

    $.ajax({url: '/projects/yourprojects.json', dataType: 'json'});
    
    0 讨论(0)
  • 2021-02-04 13:19
    :formats=>[:html]
    

    That says the server is thinking that html is being requested. Try adding a .json to your path (and possible route) and that will force the format. TO make that would would need a route something like this:

    map.your_projects '/projects/yourprojects.:format',
      :controller => 'projects',
      :action => 'yourprojects'
    

    Somehow, someway, the params[:format] should be "json" for this request so the format handlers can do the right thing.

    0 讨论(0)
  • 2021-02-04 13:28

    This is not issue of Rails but rather AJAX / jQuery not sending Accept header: Try this:

    $.ajax({
       url: 'url_to_action', dataType: "json",
         beforeSend : function(xhr){
           xhr.setRequestHeader("Accept", "application/json")
         },
         success : function(data){
           //.. do something with data
         },
         error: function(objAJAXRequest, strError, errorThrown){
           alert("ERROR: " + strError);
         }
      }
    );
    

    If all your AJAX requests expect JSON, then you can set header globally:

    $.ajaxSetup({
      dataType: 'json',
      'beforeSend' : function(xhr){
        xhr.setRequestHeader("Accept", "application/json")
      } 
    });
    

    Other option would be adding .json to path or data:{format: 'json'} to $.ajax hash of options. Rails supports format path suffixes by default for resoures routing. Just try rake routes to see.

    0 讨论(0)
提交回复
热议问题