2010-11-25 6 views
1

Salut à tous. J'utilise l'API Twitter via javascript et je passe un appel au user_timeline.json. Tout semble bien fonctionner avec jQuery.getJSON mais j'aimerais vraiment obtenir la réponse sous la forme d'une chaîne sans qu'elle soit convertie en objets, ce que fait getJSON. Quand je change ma méthode de getJSON à get, je reçois l'erreur suivante dans Chrome:jQuery: getJSON vs get, en-têtes http? (API Twitter)

Origin http://localhost is not allowed by Access-Control-Allow-Origin. 

qui semble être causé par le manque d'un en-tête Accept. Ai-je raison? Si oui, comment puis-je spécifier un en-tête HTTP pour la méthode get brute?

Merci.

Répondre

1

Seulement lorsque vous utilisez JSON, vous êtes autorisé à interroger des domaines différents de l'origine, avec Ajax. (pour des raisons de sécurité)

Voir

Vous aurez besoin d'utiliser un serveur proxy pour ce faire.


Si vous voulez le JSON réel au format de chaîne, il vous suffit de le resynchroniser.

Utilisez https://github.com/douglascrockford/JSON-js et appelez var jsonString = JSON.stringify(yourJsonObject);

+0

Merci, cela a tout à fait du sens =) – kovshenin

3

Vous ne pouvez l'obtenir sous forme de texte brut, la façon dont tout cela fonctionne est JSONP, ce qui crée une étiquette <script>, et les données qui revient est JavaScript réelle, comme ceci:

myFunc({ ...data ... }); 

Il est pas jQuery le convertissant en JSON ici, c'est le JavaScript actuel qui est appelé, où myFunc est votre fonction de rappel ... donc la requête n'est jamais un texte à traiter, c'est un objet javascript à partir du début.

+0

Merci Monsieur, vous avez un point là-bas. – kovshenin