Javascript + Ajax is not returning as expected

3

I'm trying to send the data from this page to the server, but Js does not return the Message variable ...

I know little of JS and would like some way to call the variable as soon as the server receives the data.

    

asked by anonymous 10.08.2015 / 22:16

2 answers

1

Enable server-side CORS ... ( link )

If you add an error to your ajax, you will notice that it drops there.

$.ajax({
    type: "GET",
    url:  strUrl,
    crossDomain: true,
    dataType: 'jsonp',
    beforeSend: function (xhr) {
       xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
    },
    success: function(data)
    {
        if (data == "Realizado com sucesso.")
        {
            var Mensagem = "Obrigado por se cadastrar na BILLABONG!";

            $("#divNewsLetterContainer").html("");
            $("#divNewsLetterContainer").append("<span class='spnMensagemNewletter'>" + Mensagem + "</span>");
        }
        else
        {
            alert(data);
        }
    },
    error: function(data) {
        alert('Ocorreu um erro, olhe o console');
        console.log(data);
    }
});

Add an action to your form:

   <form action="javascript:void(0);" id="divNewsLetterContainer" class="newsletter" onsubmit="EnviarNewsLetter();">
        <input type="text" class="fitext" name="nome" id="nome" size="20" value="" placeholder="name" required="">
        <input type="email" name="email" id="email" size="20" value="" placeholder="[email protected]" required="">
        <input type="submit" id="btw-ok" value="assinar" class="btw-ok">
   </form>
    
11.08.2015 / 02:03
0

It seems to me that your problem lies in the variables:

var strNome = $("#nome").attr("value");
var strEmail = $("#email").attr("value");

Switch By:

var strNome = $("#nome").val();
var strEmail = $("#email").val();

As it is, they are being sent "empty", so it does not return anything in Ajax.

Also change your form by adding a onsubmit , like this:

<form id="divNewsLetterContainer" class="newsletter" onsubmit="return EnviarNewsLetter()">
     <input type="text" class="fitext" name="nome" id="nome" size="20" value="" placeholder="name" required/>
     <input type="email" name="email" id="email" size="20" value="" placeholder="[email protected]" required/>
     <input type="submit" id="btw-ok" value="assinar" class="btw-ok">
</form>

And in the script, add return false; after Ajax (this prevents the page from being reloaded):

$.ajax({
...
});
return false;

Another thing ... where it has:

if (data == "Realizado com sucesso."){
...
}

Maybe it's better to use:

if (data.indexOf("Realizado com sucesso.") != -1){
...
}

Unless the return of the variable data is a string EXACTLY equal to "Done successfully." (without HTML tags etc).

    
03.01.2016 / 00:14