williamg
williamg

Reputation: 2758

jQuery 'If' statement string comparison not working

I'm having a very hard time trying to do something very simple. Here's the code:

        if(data == 'success') {

            alert('foo');

        } else {

            alert(data);

        }

I've simplified it, but that's all that's necessary to understand what's going on. the variable 'data' is a result of an AJAX call, if that makes any difference. The problem is that it always goes to the 'else' statement and it alerts 'success', which it shouldn't if it goes to the 'else'. Any idea what's going on here?

EDIT: Here's the full AJAX code in jQuery:

$.post("/manage_sites.php", {before:before, edit:after}, function(data){

        if(data == success) {

            alert('blah');

        } else {
            alert(data);
        }
    });

And then in the PHP response:

...code....
$update = mysql_query("UPDATE users SET feeds = '$afterFeed' WHERE username = '$name'") or     die("Query Failed");

if($update) {

    echo  'success';  //this is the 'string' that is being given to 'data'
}

Upvotes: 13

Views: 64188

Answers (3)

syyu
syyu

Reputation: 407

Client side validation working fine.

$.trim() fine.

Thank You Nick. It took me long to understand why its not working ...

Upvotes: 0

Nick Craver
Nick Craver

Reputation: 630429

You can fix it on the client side using $.trim() like this:

if($.trim(data) == 'success') {

Or, a better approach would be removing the new-line coming from the server-side, probably an erroneous new-line in your PHP somewhere, check before or after the <? ?> block, this is most often where they crop up.

Or, just exit after outputting your content, like this:

if($update) {
  echo 'success';
  exit();
}

Upvotes: 32

karlw
karlw

Reputation: 668

You can remove the trailing ?> in your file, if it is the last line in the file. I want to response to the comments to the original issue, but i don't see how.

Upvotes: 0

Related Questions