Sencha似乎不喜欢Rails的json

| 我有一个Rails控制器,它将一些模型渲染为json。
 @events = Event.all
 respond_to do |format|
  format.html # index.html.erb
  format.xml  { render :xml => @events }
  format.json { render :json => { :results => @events } }
 end
输出看起来像这样:
{
    \"results\":
    [
        {
            \"name\":\"test\",
            \"created_at\":\"2011-03-23T13:32:57Z\",
            \"latitude\":60.0,
            \"location\":null,
            \"updated_at\":\"2011-04-14T16:38:54Z\",
            \"id\":1,
            \"longitude\":30.0,
            \"takes_place_at\":\"2011-03-23T13:32:00Z\"
        },
        {
            \"name\":\"x\",
            \"created_at\":\"2011-03-23T13:36:44Z\",
            \"latitude\":60.0,
            \"location\":null,
            \"updated_at\":\"2011-03-23T13:36:44Z\",
            \"id\":2,
            \"longitude\":30.0,
            \"takes_place_at\":\"2011-03-23T13:36:00Z\"
        },
        {
            \"name\":\"Gruempi\",
            \"created_at\":\"2011-03-24T14:00:32Z\",
            \"latitude\":60.0,
            \"location\":null,
            \"updated_at\":\"2011-04-14T16:39:47Z\",
            \"id\":3,
            \"longitude\":30.0,
            \"takes_place_at\":\"2011-03-24T14:00:00Z\"
        },
        {
            \"name\":\"ba\",
            \"created_at\":\"2011-04-10T22:40:07Z\",
            \"latitude\":60.0,
            \"location\":\"12,
            14\",
            \"updated_at\":\"2011-04-10T22:40:07Z\",
            \"id\":4,
            \"longitude\":30.0,
            \"takes_place_at\":\"2011-04-10T22:36:00Z\"
        },
        {
            \"name\":\"sfasdfs\",
            \"created_at\":\"2011-04-10T22:44:55Z\",
            \"latitude\":60.0,
            \"location\":\"we\'re try to find you ...\",
            \"updated_at\":\"2011-04-10T22:44:55Z\",
            \"id\":5,
            \"longitude\":30.0,
            \"takes_place_at\":\"2011-04-10T22:42:00Z\"
        },
        {
            \"name\":\"asdfsad\",
            \"created_at\":\"2011-04-10T22:55:03Z\",
            \"latitude\":60.0,
            \"location\":\"we\'re try to find you ..asfd.\",
            \"updated_at\":\"2011-04-10T22:55:03Z\",
            \"id\":6,
            \"longitude\":30.0,
            \"takes_place_at\":\"2011-04-10T22:54:00Z\"
        }
    ]
}
我尝试使用sencha / extjs使用该服务:
refresh = function() {
  Ext.util.JSONP.request({
    url: \'http://localhost:3000/search/by_date.json\',
    callbackKey: \'callback\',
    params: {
      year:\"2011\",
      month:\"04\",
      day:\"10\",
      uniqueify: Math.random()
    },
    callback: function(data) {
      var events = data.results;
      timeline.update(events);
    }
  });
};
而sencha只是不解析它。同时,它可与Twitter等API调用一起使用。 有什么想法我做错了吗?或者如何找到错误?     
已邀请:
如果您正在执行JSONP请求,则需要将返回的JSON包装在GET请求中指定为参数的函数中,在这种情况下为\'callback \'。 Sencha touch将在内部处理该函数的命名,但是您需要记下传入的callbackKey选项,以便服务器可以正确响应。 请求http:// localhost:3000 / search / by_date.json?callback = jsonP2343243243时,应将预期的响应包装在由callback参数指定的函数中。该GET请求应产生以下JSON:
jsonP2343243243({ \"results\": [ ... ] });
这将导致在浏览器解释该函数时调用该函数,然后将调用AJAX的回调。在rails中,您需要将渲染更改为以下内容: Rails <3.0:
format.js { render :js => params[:callback] + \"(\" + { :results => @events }.to_json + \");\"} 
滑轨> 3.0
format.js { render :json => { :results => @events },  :callback => params[:callback] }
    

要回复问题请先登录注册