Eu tenho o seguinte serviço web;
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
É padrão de estoque, sem alterações para os decoradores da classe.
Eu tenho esse método 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);
}
});
É uma ação pós, porque mais tarde preciso postar dados nela.
Quando executo o jQuery, recebo um erro "Sem transporte" retornado.
Uma coisa que devo mencionar também é que o jQuery é armazenado em um arquivo HTML simples na minha máquina e o WebService está sendo executado na minha máquina também.
Não existe um código na página HTML, é simplesmente uma página da Web e não um projeto de # # ou algo assim.
Alguém pode me indicar a direção certa aqui?
jquery
ajax
web-services
griegs
fonte
fonte
Respostas:
Se a sua página jQuery não estiver sendo carregada
http://localhost:54473
, provavelmente esse problema está ocorrendo porque você está tentando fazer uma solicitação entre domínios.Atualização 1 Dê uma olhada nesta postagem do blog .
Atualização 2 Se esse for realmente o problema (e suspeito que seja), convém verificar o JSONP como uma solução. Aqui estão alguns links que podem ajudar você a começar:
fonte
Adicione isso:
jQuery.support.cors = true;
Ele permite scripts entre sites no jQuery (introduzido após 1.4x, acredito).
Estávamos usando uma versão muito antiga do jQuery (1.3.2) e a trocamos pela 1.6.1. Tudo estava funcionando, exceto as chamadas .ajax (). A adição da linha acima corrigiu o problema.
fonte
Eu tive o mesmo erro em uma página e adicionei estas linhas:
e finalmente funciona para mim;) não há mais erro no IE9.
fonte
Nenhuma das respostas propostas funcionou completamente para mim. Meu caso de uso é um pouco diferente (fazer um ajax chegar a um arquivo .json do S3 no IE9). A configuração
jQuery.support.cors = true;
se livrou doNo Transport
erro, mas eu ainda estava recebendoPermission denied
erros.O que funcionou para mim foi usar o jQuery-ajaxTransport-XDomainRequest para forçar o IE9 a usar o XDomainRequest. Usar isso não exigiu configuração
jQuery.support.cors = true;
fonte
eu resolvo isso usando dataType = 'jsonp' no lugar de dataType = 'json'
fonte
Eu também tive esse problema e todas as soluções fornecidas acima falharam ou não foram aplicáveis devido a restrições de serviço da web do cliente.
Para isso, adicionei um iframe na minha página que residia no servidor do cliente. Então, quando publicamos nossos dados no iframe e o iframe, os publicamos no serviço da web. Portanto, a referência entre domínios é eliminada.
Adicionamos uma verificação de origem bidirecional para confirmar apenas os dados de postagens de página autorizadas de e para o iframe.
Espero que ajude
fonte
Para mim, é uma história totalmente diferente.
Como esta página tem uma boa classificação nos mecanismos de pesquisa, devo adicionar meu caso e a solução aqui também.
Eu
jquery
me construí comwebpack
escolhendo apenas os módulos que uso. O ajax sempre falha com a mensagem "Sem transporte" como a única pista.Após uma longa depuração, o problema acaba sendo
XMLHttpRequest
plugáveljquery
e não é incluído por padrão.Você precisa incluir explicitamente o
jquery/src/ajax/xhr
arquivo para fazer o ajax funcionar nos navegadores.fonte
Eu o resolvi simplesmente removendo o domínio do URL da solicitação.
fonte