Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
10
respostas

Sem mensagem de retorno no callback requisição AJAX

Digamos que tenho esse cenário que a url do webservice é dessa forma:

localhost:xxxx/controle/validar?mesa=55555&pedido=XXXX&val=Q

$('.acao-finalizar').click(function () {
        $.ajax({
            url: 'http://localhost:xxxx/controle/validar',          
            data:{
                mesa: "55555",
                pedido:"XXXXX",   
                val:"Q"            
            },          
            sucess: function (resposta) {
                Materialize.toast(resposta, 2000);
            },
            error: function (erro) {                
                Materialize.toast(erro.responseText, 3000, 'red-text');

            }
        });
    });

Consigo a mensagem de callback mas estou em um cenário que a url é utilizado barras:

localhost:xxxx/controle/validar/55555/XXXXXX/Q

$('.acao-finalizar').click(function () {
        $.ajax({
            url: 'http://localhost:xxxx/controle/validar/55555/XXXXXX/Q',          

            sucess: function (resposta) {
                Materialize.toast(resposta, 2000);
            },
            error: function (erro) {                
                Materialize.toast(erro.responseText, 3000, 'red-text');

            }
        });
    });

Mas não consigo a mensagem do callback.

Como posso proceder nesse cenário?

10 respostas

Felipe, não consegui achar nenhum erro no seu código. Se você der um console.log(erro) no callback error o que aparece no console?

Tinha instalado uma extensão no firefox para não ocorrer o problema de CORS.

Quando executo o programa sem a extensão cai no console.log(erro):

Object { readyState: 0, getResponseHeader: getResponseHeader(), getAllResponseHeaders: getAllResponseHeaders(), setRequestHeader: setRequestHeader(), overrideMimeType: overrideMimeType(), statusCode: statusCode(), abort: abort(), state: state(), always: always(), catch: catch(), 8 more… }

Agora com a extensão ativa não cai no console.log do erro e nem no console.log do sucess.

Aproveitei e coloquei alert no sucess e error mas também não é executado.

To achando que o código cai fora antes de passar pelo sucess ou error quando não ocorre o problema de CORS não sei por qual motivo.

Ops! Acabei de ver no seu código que está faltando a porta do servidor:

'http://localhost:xxxx/controle/validar'

Adiciona a porta e vê se é isso :-)

O rota que você está batendo na sua API é vendo em qual linguagem (Java, C#, JavaScript ....) para backdend?

Backend é java e ele retorna texto e não json.

URL que estou usando é essa: http://189.78.179.53:19111/controleEventos/webresources/eventos/validar/235746/aaaaaaaaa/Q

Quando passo a URL no navegador ele me retorna a mensagem.

Não sei se tem influência, mas já fiz testes sem sucesso colocando no ajax esses atributos:

 type: "GET",
            dataType: "text",
            contentType: "application/x-www-form-urlencoded; charset=UTF-8",

Dependendo como foi feito o servidor, faz diferença sim :-)

Esse servidor que você está usando é o curso que te deu ou você que está fazendo ele?

Foi feito por outro aluno e estava tentando realizando o retorno da mensagem utilizando os conhecimentos ajax que peguei nos cursos.

Vc teria alguma sugestão em relação a esse problema? :)

solução!

Acho que agora foi, fiz conforme esse exemplo:

$.ajax({
 url : "xml.xml",
 dataType : "xml",
 success : function(xml){
        $(xml).find('item').each(function(){
            var titulo = $(this).find('title').text();
            console.log(titulo);
        });
    }
});

Obrigado pela ajuda!

Como é texto então está retornando XML.

Muito bom man. Parabéns :-)