Je veux faire un appel d'un incendie et d'oublier JQuery à un service Web. P>
Fondamentalement, je souhaite envoyer un objet JSON à Comment faites-vous cela? Il y a beaucoup de choses sur JSON et telles, mais je n'ai pas besoin de gérer une réponse. J'ai envie de me manquer un détail évident. P> http://myservice.com/userservisits/create code> et Je ne me soucie pas de recevoir une réponse de retour forte >. Cependant, nous souhaitons utiliser le même service pour plusieurs de nos domaines, ce qui signifie que les restrictions croisées religieuses liées à Ajax. P>
3 Réponses :
Le fait que vous n'aurez pas voulu que le dos des données ne soit effectivement pas pertinent, vous êtes toujours confronté aux mêmes problèmes de domaine croisé. Il y a deux façons que vous pouvez aller ... p>
1) Vous pouvez utiliser JSONP (qui fait réellement une demande d'obtention) d'envoyer les données à travers bien que cela se sent un peu désordonné, car vous devriez essayer d'utiliser des verbes HTTP pour leur intention (c.-à-d. GET devrait récupérer des données). p>
2) Vous pouvez utiliser ARR (routage de demande d'application dans IIS) pour réécrire essentiellement la demande. Vous serez donc configuré une règle pour chaque domaine pour avoir une règle de réécriture par règle. www.mydomain.com/webcall voie à http://myservice.com/userservisits/create où MyDomain. com est le domaine où l'appel Ajax est en cours d'initiation. Si vous le faites, vous pouvez utiliser AJAX de la manière habituelle car autant que le navigateur vous inquiète, vous faites maintenant des demandes sur le même domaine P>
Le fait que vous ne traitez pas la réponse n'affecte pas le même problème de politique d'origine auquel vous êtes confronté. Mais, le fait que vous contrôleriez tous les consommateurs du service ouvre la possibilité d'utiliser Cors a>. Cependant, tous les navigateurs ne soutiennent pas les CORS. Voir le tableau de compatibilité du navigateur. Si vous devez prendre en charge les autres navigateurs, vous devez toujours utiliser JSONP. P>
Par "Utiliser JSONP", voulez-vous dire juste le type de données: "JSONP"? Que signifie "utiliser JSONP" si vous n'avez pas de rappel?
@John Cela signifie utiliser l'injection d'élément de script. Fondamentalement, tout ce que vous avez à faire est de créer un élément de script sur la page avec l'URL que vous souhaitez frapper comme source. Votre service a-t-il besoin d'un poste ou d'une demande d'obtenir?
Je peux construire le service à prendre soit soit, bien que la publication plus correctement identifie correctement que quelque chose est fait, pas récupéré.
Obtenir serait plus facile. Ensuite, tout ce que vous avez à faire est d'utiliser DataType JSYP.
donc je viens d'utiliser $ .get (... DataType: "JSONP" ...) et n'inclut pas de rappel et ça fonctionnera? Est-ce que c'est ça?
Je pense que cela fonctionnera pour faire une demande de domaine croisé. Essaye le.
Le moyen le plus simple d'envoyer une demande HTTP GET est avec une balise d'image: et, vous pouvez même obtenir un peu d'informations en manipulant le EDIT: STRUT> Vous mentionné Vous préférerez peut-être utiliser un poste http. Ce n'est pas aussi simple qu'une balise d'image, mais vous pouvez créer un message croisé à l'aide d'un iframe caché: p> i pense em> jQuery a quelque chose comme ça construit déjà. Vous pouvez essayer de creuser dans le charger code> et
erreur code> événements. Bien sûr, si la réponse n'est pas une image, l'événement code> erreur code> sera appelé, et non
charger code>. Vous pouvez définir votre service pour renvoyer une image de pixel unique pour résoudre ce problème. P>
jquery.ajax code>
documentation. Sinon, vous pouvez probablement trouver un plugin qui le fait. P> p>
Bien que cela puisse être un bon moyen de gérer les choses, il n'ya aucun moyen de gérer les cas d'erreur, car l'OP ne semble pas être concerné par la réponse qui pourrait être correcte. Vous pouvez également définir le gestionnaire "Onerror" sur l'objet Image, mais il n'est pas moyen de communiquer les données d'erreur réelles à la classe d'appel, ne gère que des erreurs génériques de cette façon.
@FilmJ - Bien sûr. Mais cette question concerne le cas spécifique où vous n'allez pas analyser la réponse. L'approche de balise d'image est parfaitement adaptée à cela.
@FilmJ - En outre, vous pourriez être très créatif avec la manipulation des erreurs. Une image 1PX par 1PX peut indiquer le succès. Toute autre taille d'image pourrait indiquer un code d'erreur, déchiffré par la taille. Ou un message d'erreur peut même être affiché dans l'image résultante.
Toutes les réponses données sur le travail et sont appréciées. À long terme, je pense que Cors est la réponse, mais je ne suis pas prêt à le faire aujourd'hui. J'ai marqué cela comme la "réponse", car il offre un hack intelligent (le support de navigateur pour les images est aussi vieux que le temps) et une solution iframe qui fonctionnera si le service étant appelé est reposant.
Pas un duplicata. Le lien fourni dit "J'ai besoin de saisir et d'analyser la réponse après." Je n'ai pas besoin d'analyser la demande.
Juste, mais vous pouvez le faire comme ça et tout simplement pas analyser la réponse ...
J'espérais qu'en n'avoir pas besoin de la réponse qu'il y aurait une approche plus simple.
@JOHN: Le duplicata fourni a de nombreuses réponses approfondies décrivant comment vous pouvez le faire avec / sans se soucier de la réponse.
Je suis d'accord, mais il peut y avoir d'autres solutions plus simples lorsqu'une réponse n'est pas nécessaire par rapport à quand on est. Gilly3 a un tel exemple ci-dessous.
@Andrewwhwhitaker - On me rappelle ce que Jeff a dit à propos de similaire i> questions dans un Blog Poste concernant les doublons : «Il est souvent bénéficié d'avoir plusieurs variantes subtiles d'une question autour, car les gens ont tendance à demander et à rechercher en utilisant des mots complètement différents, et mieux notre couverture, meilleures chances que nos collègues chanceux peuvent trouver la réponse. ils recherchent ". Souvent, en gardant près des doublons Open améliore Stackoverflow. Outre le référencement, il est également utile quand ils se présentent comme une question "liée" à droite.
@ GILLY3: La fermeture d'une question ne le supprimera pas par magie des résultats de la recherche. Aussi, je n'ai jamais dit que c'était une question i> une question i> ou que cela devrait être supprimé i>, je souligne simplement que je pense que c'est un duplicata d'une question précédemment posée. Cette question serait toujours "autour" et localisable, elle profite toujours à la communauté. Je classerais cela sous le n ° 2 du lien que vous avez posté.
En outre, @john, Gilly3 pourrait tout aussi facilement avoir répondu à la question liée.
L'un des malheureux aspects de Stackoverflow est qu'il renforce un aspect de notre profession pour intimider les personnes ayant moins d'expérience de l'industrie / connaissances / éducation / ainsi de réputation. I, l'auteur de la question (aka celui qui a besoin d'aide), admet que l'autre question a de la valeur, mais ne croyez pas que cela répond complètement à ma question. Mon échange avec @Adam montre ce que je veux dire et je tire la valeur de ses clarifications de suivi à mes questions. Vous croyez peut-être que j'aurais dû pouvoir comprendre la réponse de l'autre question, mais est-ce vraiment votre appel?
L'aspect malheureux de la conclusion d'une question qui n'est pas une duplication exacte est qu'il devient impossible d'ajouter une nouvelle réponse spécifique à cette question qui n'est pas applicable à l'autre question.