2010-09-28 5 views
2

Je fournis un service Web qui renvoie des données en tant qu'objet JSON. Le problème est avec Ajax, Ajax ne peut pas appeler l'URL de domaine croisé. Est-il possible de le désactiver?Comment désactiver la restriction inter-domaine

+0

J'ai trouvé une bonne source qui explique comment utiliser Jsonp en utilisant des exemples http://blog.altosresearch.com/supporting-the-jsonp-callback-protocol-with-jquery-and-java/ – Tomas

Répondre

4

Vous ne pouvez pas le désactiver, mais vous pouvez résoudre le problème en acceptant JSONP -requests.

0

Utilisez JSONP si vous pouvez contrôler ce que l'autre serveur répond. JSONP doit renvoyer un script compatible javascript. (Var salut = {JSON = choses};)

Exemple pour le HTML client:

// This is our function to be called with JSON data 
function showPrice(data) { 
    alert("Symbol: " + data.symbol + ", Price: " + data.price); 
} 
var url = “ticker.js”; // URL of the external script 
// this shows dynamic script insertion 
var script = document.createElement('script'); 
script.setAttribute('src', url); 

// load the script 
document.getElementsByTagName('head')[0].appendChild(script); 

Dans ce cas, l'URL "de ticket.js" contient quelque chose comme ceci:

var data = {symbol: 'Hi', price: 91.42}; 

La deuxième possibilité est de créer un script local (php, perl, ruby, tout ce que vous utilisez) qui est un proxy vers la source JSON externe.

+1

Ceci n'est pas tout à fait correct . Le serveur doit envelopper les données JSON dans un rappel de fonction. – Magnar

+0

Alors, comment devrait-il regarder alors? – sinni800