This is probably a good reason to make it a habit to return a JSON object, so that the data is not simply a string of characters with the associated ambiguities. I realize this leaves me open to counterarguments of 'it's not a efficient' but really that's a minor worry (to me that is).
On Jan 2, 5:23 pm, "Michael Geary" <m...@mg.to> wrote: > The 'if' statement in JavaScript is reliable. > > If your "if( data == 'no' )" is taking the "else" path, the most likely > reason is that the data variable is indeed not equal to "no". > > Even though the console.log showed a value of "no", are you sure there isn't > a newline at the end? What does "console.log(data.length)" show? > > You can also use the Fiddler2 debugging proxy, or the Net tab in Firebug, to > see the actual length of the body of the response from the PHP script. > > My suspicion is that there's an extra newline at the end of your PHP script. > Your PHP script actually looks like this, doesn't it? > > <?php > ...your code... > ?> > > Depending on the version of PHP, a single newline after the ?> may not add a > newline to the output, but if there are two newlines after the ?> you'll > definitely get an extra newline in the output - and it wouldn't necessarily > be obvious from looking at the PHP code in a text editor. > > Remember that anything before the opening <?php or after the closing ?> is > rendered directly as part of the HTML output. > > Because of this, best practice in a pure PHP script is to *omit* the closing > ?>. The language does not require it, and omitting the closing ?> insures > that you won't get any spurious newlines in your output. > > If this isn't it, post a link to a test page that demonstrates the problem. > > -Mike > > > From: wattsup > > > I am having some problems with a jquery script that I am > > writing. The problem is after I receive the data from the php > > file jquery seems to skip the if statement. I am logging to > > console and it is showing yes/ no depends on email address. I > > am enclosing my scripts in case someone can help me. > > > <script src="javascripts/jquery-1.2.6.js" type="text/javascript" > > charset="utf-8"></script> > > <script src="javascripts/jquery.validate.js" type="text/javascript" > > charset="utf-8"></script> > > <script src="javascripts/jquery.corner.js" type="text/javascript" > > charset="utf-8"></script> > > <script src="javascripts/jquery.lightbox.packed.js" > > type="text/ javascript"></script> > > > $(document).ready(function(){ > > $("#email").blur(function(){ > > var post_string = $(this).val(); > > > $("#msgbox").removeClass().addClass('messagebox').text > > ('Checking...').fadeIn(1000); > > $.post("php/email.php",{ email_check: > > post_string} ,function(data){ > > console.log(data); // show data > > value in console > > if(data=='no') { // email not avaiable > > <------------------------- Skipping this area > > > $("#msgbox").fadeTo(200,0.1,function(){ > > > $(this).html('email address already exists').addClass > > ('messageboxerror').fadeTo(900,1) > > }); > > } else { // email avaiable > > <-------------------------- Always gos here no matter what > > > $("#msgbox").fadeTo(200,0.1,function(){ > > > $(this).html('email available to register').addClass > > ('messageboxok').fadeTo(900,1); > > }); > > } // end if > > }); // end post > > }); // end email blur > > }); // end doc ready > > > PHP FILE > > > if(isset($_POST['email_check'])) { > > $email = $_POST['email_check']; > > > require_once('config.inc.php'); > > require(MYSQL); > > > $result = @mysql_query("SELECT * FROM members WHERE > > (user_email = '$email')"); > > $row_num = mysql_num_rows($result); > > > if( $row_num > 0){ > > // "unavailable to register"; > > $valid = "no"; > > }else{ > > // "available to register"; > > $valid = "yes"; > > }; > > > echo $valid; > > mysql_close(); > > } > > > I have been working on this all day and can not figure out > > why the data is skipping the if statement. if you have any > > ideals please let me know.