2010-09-08 5 views
0

J'ai deux applications de rails. Dans la première application j'ai la méthode suivante dans mon contrôleur:rails3: rendu: json ne peut pas être lu à partir de jquery?

def delivery_status 
    envelope_id = params[:id] 
    render :json => envelope.to_json(:include => [:deliveries, :log_lines]) 
end 

qui, si aller à l'url dans mon navigateur, montre bien mon JSON. Semble ok. Cependant, si j'appelle cela par jQuery, de ma deuxième application, en utilisant ce qui suit:

$(document).ready(function(){ 
    $('#provisioning_sms_details_dialog').hide(); 

    $('.get_sms_details').live('click', function(event) { 
     var el = $(this), 
      data_url = el.attr('data-url'); 
     $.ajax({ 
     url: data_url, 
     dataType: 'text', 
     success: function(data, status, req) { 
      alert('received with status' + status) 
      alert('received json ' + data); 
     } 
     }); 
    }); 
}); 

alors le droit url est frappé avec les paramètres corrects mais data est toujours vide. J'ai d'abord essayé d'utiliser $.getJSON, puis $.get pour terminer à $.ajax. Je ne suis pas sûr mais il semble que je fasse quelque chose de mal au côté serveur. Si je regarde la requête à l'intérieur de firebug, la réponse est en effet vide. Pourtant, je ne comprends pas, si laisser le navigateur a frappé la même URL, je reçois mon objet JSON.

Des idées comment résoudre ce problème?

Répondre

1

S'agit-il d'une demande inter-domaine? Dans ce cas, votre requête ajax serait de type HEAD, et vous ne verriez qu'un corps vide. Les appels Ajax sont limités par le same origin policy.

Si tel est le cas, vous pouvez regarder dans JSONP, ce qui résoudrait le problème.

+0

En effet, jsonp l'a résolu! Merci Magnar! – nathanvda

Questions connexes