Usuário com melhor resposta
Consumir um serviço através de Ajax/JSON não vai

Pergunta
-
Olá pessoal tenho um serviço que estou tentando consumir via Ajax no Jquery, mas sempre retorna [object Error] no IE e no Chrome não vem nada, segue a chamada numa página HTML:
<script src="http://code.jquery.com/jquery-1.5.js"></script> <script type="text/javascript"> jQuery.support.cors = true; $(document).ready(function () { $.ajax({ type: 'GET', url: 'http://NOTE2:9877/TesteWCF/retornaTeste/', processData: true, cache: false, crossDomain:true, data: ({id:3}), dataType: "json", contentType:"application/json", success: function (data) { alert('teste'); }, error: function (xhr, ajaxOptions, thrownError) { alert(thrownError); } }); }); </script>
No meu serviço inicializo assim:
<?xml version="1.0"?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> </startup> <system.diagnostics> <sources> <source name="System.ServiceModel" switchValue="Error" propagateActivity="true"> <listeners> <add name="HostingLogging" type="System.Diagnostics.XmlWriterTraceListener" initializeData="e:\temp\HostingLogging.svclog" /> </listeners> </source> </sources> </system.diagnostics> <system.serviceModel> <bindings> <webHttpBinding> <binding name="webBinding"/> </webHttpBinding> </bindings> <behaviors> <endpointBehaviors> <behavior name="jsonBehavior"> <enableWebScript/> </behavior> </endpointBehaviors> <serviceBehaviors> <behavior name="defaultBehavior"> <serviceDebug includeExceptionDetailInFaults="true" /> <serviceMetadata httpGetEnabled="true" /> </behavior> </serviceBehaviors> </behaviors> <services> <service name="TesteVirtualLib.ServicoTeste"> <endpoint address="http://NOTE2:9877/TesteWCF" binding="webHttpBinding" bindingConfiguration="webBinding" contract="Controller.ITesteWCF" behaviorConfiguration="jsonBehavior"/> </service> </services> <diagnostics> <messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" maxMessagesToLog="65535000" maxSizeOfMessageToLog="500"/> </diagnostics> <standardEndpoints> <webScriptEndpoint> <standardEndpoint name="" crossDomainScriptAccessEnabled="true"/> </webScriptEndpoint> </standardEndpoints> </system.serviceModel> </configuration>
Na minha interface:
[OperationContract] [WebGet(ResponseFormat=WebMessageFormat.Json)] int retornaTeste(int id);
Quando tento rodar no IE navegador retorna: [object Error], no Chrome abre um alert vazio, enfim eu preciso retornar estes dados através de Json, mas não estou conseguindo fazer. Ao executar o serviço diretamente na URL, retorna {"d":17}.
Não sei o que estou fazendo de errado.
Agradeço qualquer ajuda.
Se for útil marque como tal, se for a resposta, marque-a também. Procure ajudar a quem mais precisa
Respostas
-
Consegui resolver, o problema estava na habilitação do crossdomainacriptaccessenable:
<bindings> <webHttpBinding> <binding name="webBinding"<strong> crossDomainScriptAccessEnabled="true"</strong>/> </webHttpBinding> </bindings>
Se for útil marque como tal, se for a resposta, marque-a também. Procure ajudar a quem mais precisa- Marcado como Resposta Ricardo D. Beck sábado, 19 de março de 2011 23:39
-
Boas Ricardo,
Fica aqui uma referência: http://www.israelaece.com/post/Efetuando-chamadas-entre-dominios.aspx
http://www.israelaece.com- Marcado como Resposta Ricardo D. Beck segunda-feira, 21 de março de 2011 18:12
Todas as Respostas
-
Consegui resolver, o problema estava na habilitação do crossdomainacriptaccessenable:
<bindings> <webHttpBinding> <binding name="webBinding"<strong> crossDomainScriptAccessEnabled="true"</strong>/> </webHttpBinding> </bindings>
Se for útil marque como tal, se for a resposta, marque-a também. Procure ajudar a quem mais precisa- Marcado como Resposta Ricardo D. Beck sábado, 19 de março de 2011 23:39
-
Boas Ricardo,
Fica aqui uma referência: http://www.israelaece.com/post/Efetuando-chamadas-entre-dominios.aspx
http://www.israelaece.com- Marcado como Resposta Ricardo D. Beck segunda-feira, 21 de março de 2011 18:12