Json, jsonp

Mam problem z przeniesieniem kawałka kodu z json do jsonp

Jak wszystko działa w około domeny poprzez json działa:

[code=javascript]$(document).ready(function() {
$.getJSON(“http://chodzezkijami.pl/events.json”, function(data) {

    $('.chzk_cal').html("<table><tr><th>Lp</th><th>Data</th><th>Miejscowość</th><th>Dystans</th><th>Nazwa</th></tr></table>");

    $.each(data, function(i,e){
            $('.chzk_cal > table').append('<tr>'
                                    + '<td>' + (i+1) + '.'  + '</td>'
                                    + '<td>' + e.event.date  + ' </td>'
                                    + '<td>' + e.event.city  + ' </td>'
                                    + '<td>' + e.event.distance  + ' </td>'
                                    + '<td><a href="http://chodzezkijami.pl/events/'+ e.event.id +'">' + e.event.name  + '</a></td>'
                                    + '</tr>');
    });

});
});[/code]
wersja z jsonp (zmienia się linijka z adresem):

[code=javascript]$(document).ready(function() {
$.getJSON("http://chodzezkijami.pl/events.json?jsoncallback=?", function(data) {

    $('.chzk_cal').html("<table><tr><th>Lp</th><th>Data</th><th>Miejscowość</th><th>Dystans</th><th>Nazwa</th></tr></table>");

    $.each(data, function(i,e){
            $('.chzk_cal > table').append('<tr>'
                                    + '<td>' + (i+1) + '.'  + '</td>'
                                    + '<td>' + e.event.date  + ' </td>'
                                    + '<td>' + e.event.city  + ' </td>'
                                    + '<td>' + e.event.distance  + ' </td>'
                                    + '<td><a href="http://chodzezkijami.pl/events/'+ e.event.id +'">' + e.event.name  + '</a></td>'
                                    + '</tr>');
    });

});
});[/code]
wypluwa czystą stronę :confused: Ktoś wie może czemu? Firebug pokazuje że json został odebrany, w chrome dostaję warninga:

  • Resource interpreted as script but transferred with MIME type application/json.

Jakiś pomysł czemu to nie działa?

okazuje się, że trzeba dodać sobie jsonp, nie jest on chyba wspierany standardowo przez rails. Jak by ktoś potrzebować:

class ApplicationController < ActionController::Base protected def render_json(json, options={}) callback, variable = params[:callback], params[:variable] response = begin if callback && variable "var #{variable} = #{json};\n#{callback}(#{variable});" elsif variable "var #{variable} = #{json};" elsif callback "#{callback}(#{json});" else json end end render({:content_type => :js, :text => response}.merge(options)) end end
i wtedy:

class PeopleController < ApplicationController def show @person = Person.find(params[:id]) respond_to do |format| format.js { render_json @person.to_json } end end end

Widzisz, sam sobie pomogłeś a przy okazji mi. Dziękuję

respond_to do |format| format.js { render :json => @person.to_json, :callback => params[:callback] } end

hehe radarek zabiłeś mnie tym ;] Dzięki przyda się pewnie na przyszłość.