Dorvalla
Dorvalla

Reputation: 5240

How to output php?

I am struggling on an AJAX call I make to let me read out the return value. My php code returns automatically an echo with false or true, which I made to check if the mail was send. But I am struggling to read out the value and get it to work.

Here is my AJAX code

if(proceed == true){            
    $.ajax({
        type    : 'POST',
        url     : 'inc/actions/sendmail.php',
        data    : $('#sentMessage').serialize(),
        cache   : false,
        dataType: 'text',
        success : function (data) 
        { 
            if (data == 'true'){
                $("#sentMessage")[0].reset();
                $("#err").append("<div class='alert alert-success' role='alert'>Bedankt voor je bericht, wij nemen binnenkort contact met je op.</div>");
                $('input[name=name]').css('border-color','')
                $('input[name=email]').css('border-color','')
                $('textarea[name=message]').css('border-color','')
                setTimeout(function(){$('#err').fadeOut();}, 5000);
            }else{
                $("#err").append("<div class='alert alert-danger' role='alert'>Je telefoonnummer bestaat niet uit 10 cijfers.</div>");
                $('input[name=phone]').css({'border':'2px solid red'});
                setTimeout(function(){$('#err').fadeOut();}, 5000); 
            }
        },
        error   : function (jqXHR, textStatus, errorThrown) {console.log(errorThrown);}
    }); 
}

As you figure, it will push out the else statement constantly, cause it doesn't pass the if statement, since it doesn't know what to check.

Upvotes: 0

Views: 73

Answers (2)

PeterKA
PeterKA

Reputation: 24638

Even though all you're outputting is true/false from your PHP script, and even after you've confirmed that console.log( data ) outputs true/false, there may be white spaces around the string. Therefore you may want to use:

if( data.trim() == 'true' ) { ....

if( data.indexOf('true') > -1 ) { ..... //<=== OR

Just to confirm, you may want to use:

console.log( "'" + data + "'" );

Upvotes: 2

catalyst294
catalyst294

Reputation: 129

You should try console.log(data) to check exactly what your server is returning. There is also a change it is an object that is being returned, so you may need console.log(JSON.stringify(data)).

Also, this probably is not related but you should always be using triple equals (===), it is good practice in JavaScript.

Upvotes: 0

Related Questions