2010-11-24 11 views
3

J'ai une forme qui délivre une simple ligne de html <a href="link">A LINK</a>Récupérer html dans les domaines utilisant jQuery et JSONP

Je peux accéder au processus directement avec les données ajoutées à l'URL comme http://site.com/form.asp?sample=100

Parce que cela va à travers domaines (à un sous-domaine) J'essaie de le faire en utilisant JSONP. J'ai d'abord essayé avec le type de données json mais je recevais toujours un 403 interdit. Voici ce que j'essaie avec JSONP mais il y a toutes sortes d'erreurs et renvoie une erreur avec ce% 5Bobject% 20Object% 5D "ajouté à cela. url?

$j.getJSON({ 
     type: 'POST', 
     url: 'http://site.com/form.asp', 
     data: 'order=' + ordervalue, 
     contentType: "application/json; charset=utf-8", 
     dataType: "jsonp", 
     success: function(response) { 
      alert(response); 
     } 
    }); 

Répondre

7

JSONP ne

JSONP est strictement une requête GET fonctionne pas comme ça, vous n'êtes pas envoyer JSON du tout, vous envoyez HTML. (fait en créant une étiquette <script>) , vous ne pouvez pas POST cross-domain et obtenir le résultat de retour ... il ne fonctionne tout simplement pas de cette façon.Le fonctionnement de JSONP est il ajoute essentiellement à votre page:

<script type="text/javascript" src="http://site.com/form.asp?order=something&callback=myFunc"></script> 

.... que la réponse doit être JavaScript valide, généralement il ressemble:

myFunc({ "key": "value"...data, etc... }); 

Il ne fonctionne pas pour aller chercher HTML, il se contente de une erreur de syntaxe, cette limitation est très intentionnelle, et une partie des blocs de sécurité en place (partie de la same origin policy).

+0

Merci pour l'explication Nick. J'ai eu le type défini comme «GET» mais avait le même problème alors pensé que je voudrais essayer de poster. Avez-vous une recommandation sur la façon de récupérer le code HTML qui est imprimé à partir d'une URL avec des propriétés à travers le domaine? J'étais proche en utilisant JSON mais obtenir le 403 et je ne sais pas si je suis très proche du jsonp. – Zac

+2

@zac - Vous devriez utiliser la requête par l'intermédiaire de votre propre domaine si vous voulez récupérer du code HTML, vous ne pouvez récupérer que du JavaScript inter-domaines –

+0

Woo Hoo! Cela a fait l'affaire! Je vous remercie. Maintenant, je peux dormir :) – Zac

1

Vous pouvez poster/obtenir interdomaine sur le client:

flyJSONP/YQL
jankyPOST/postMessage/contentWindow
CORS