J'ai le service Web suivant;
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
C'est la norme de stock sans modifications aux décorateurs de classe.
J'ai cette méthode jQuery;
var webMethod = "http://localhost:54473/Service1.asmx/HelloWorld";
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
data: "{}",
dataType: "json",
url: webMethod,
success: function(msg){ alert(msg.d); },
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
C'est une action de publication car plus tard, je dois y publier des données.
Quand j'exécute le jQuery, j'obtiens une erreur "No transport" renvoyée.
Une chose que je dois également mentionner est que jQuery est stocké dans un simple fichier HTML sur ma machine et que le WebService fonctionne également sur ma machine.
Il n'y a pas de code derrière sur la page HTML, c'est simplement une page Web et non un projet ac # ou quoi que ce soit.
Quelqu'un peut-il s'il vous plaît me diriger dans la bonne direction ici?
jquery
ajax
web-services
griegs
la source
la source
Réponses:
Si votre page jQuery n'est pas en cours de chargement,
http://localhost:54473
ce problème est probablement dû au fait que vous essayez de faire une requête entre domaines.Mise à jour 1 Jetez un œil à ce billet de blog .
Mise à jour 2 Si c'est effectivement le problème (et je suppose que c'est le cas), vous voudrez peut-être consulter JSONP comme solution. Voici quelques liens qui pourraient vous aider à démarrer:
la source
Ajoute ça:
jQuery.support.cors = true;
Il permet le script intersite dans jQuery (introduit après 1.4x, je crois).
Nous utilisions une très ancienne version de jQuery (1.3.2) et l'avons échangée contre 1.6.1. Tout fonctionnait, sauf les appels .ajax (). L'ajout de la ligne ci-dessus a résolu le problème.
la source
J'ai eu la même erreur sur une page, et j'ai ajouté ces lignes:
et ça marche enfin pour moi;) plus d'erreur dans IE9.
la source
Aucune des réponses proposées n'a complètement fonctionné pour moi. Mon cas d'utilisation est légèrement différent (faire un ajax pour accéder à un fichier S3 .json dans IE9). Le réglage
jQuery.support.cors = true;
a éliminé l'No Transport
erreur mais j'obtenais toujours desPermission denied
erreurs.Ce qui a fonctionné pour moi, c'est d'utiliser le jQuery-ajaxTransport-XDomainRequest pour forcer IE9 à utiliser XDomainRequest. Son utilisation ne nécessitait pas de réglage
jQuery.support.cors = true;
la source
je le résolve en utilisant dataType = 'jsonp' à la place de dataType = 'json'
la source
J'ai moi aussi eu ce problème et toutes les solutions données ci-dessus ont échoué ou n'étaient pas applicables en raison des restrictions du service Web du client.
Pour cela, j'ai ajouté un iframe dans ma page qui résidait sur le serveur du client. Ainsi, lorsque nous publions nos données dans l'iframe et l'iframe, nous les publions sur le service Web. Par conséquent, le référencement inter-domaines est éliminé.
Nous avons ajouté une vérification d'origine bidirectionnelle pour confirmer que seules les pages autorisées publient des données vers et depuis l'iframe.
J'espère que ça aide
la source
Pour moi, c'est une histoire complètement différente.
Puisque cette page a un bon classement dans les moteurs de recherche, je devrais ajouter mon cas et la solution ici aussi.
Je
jquery
me suis construitwebpack
en ne sélectionnant que les modules que j'utilise. L'ajax échoue toujours avec le message "No Transport" comme seul indice.Après un long débogage, le problème s'avère être
XMLHttpRequest
enfichablejquery
et non inclus par défaut.Vous devez inclure explicitement le
jquery/src/ajax/xhr
fichier pour que l'ajax fonctionne dans les navigateurs.la source
Je l'ai résolu simplement en supprimant le domaine de l'url de la requête.
la source