tags:

views:

95

answers:

5

So how do i get variable value from php file with jquery...? the jquery code is in other file (tpl)

for example i have register.php and register.tpl (template file for register.php)

register.php

 ...some includes here...



if(isset($_POST['submit'])) {
    $username = mysql_real_escape_string(trim($_POST['username']));
    $email = mysql_real_escape_string(trim($_POST['email']));
    $check = $mysql->query("SELECT username FROM ".TBL_USERS." WHERE username = '".$username."' OR email = '".$email."'");
$rows_check = mysql_num_rows($check);
if($rows_check > 0) {
    echo 1;
} else {
    $password = mysql_real_escape_string($_POST['password']);
        $salt = generate_salt($email);
        $hash = hash_password($password, $salt);
        $q = $mysql->query("INSERT INTO ".TBL_USERS." (username, password, email, salt) VALUES ('".$username."', '".$hash."', '".$email."', '".$salt."')");
        if($q) {
            header("Location: index.php");
        } else {
            die(mysql_error());
        }   
    }
} else {
.. calling parse template function ...
}

register.tpl

 ..jquery library included..
    <form id="register" action="register.php" method="post">
       <tr>
       <td>Username</td>
       <td><input type="text" id="username" name="username" class="register" style="width: 200px;" />
    </td>

email ...other inputs... $("#username").blur(function() {

var email_v = $("#email").val();
 $("#msgbox").removeClass().addClass('messagebox').text('Checking...').fadeIn("slow");
 $.post("register.php",{ username:$(this).val(), email: email_v, submit: true } ,function(data)
 {
  if(data=="1") 
  {
   $("#msgbox").fadeTo(200,0.1,function()
   {

    $(this).html('This User name Already exists').addClass('messageboxerror').fadeTo(900,1);
   });
  }
  else
  {
   $("#msgbox").fadeTo(200,0.1,function() 
   {
    $(this).html('Username available to register').addClass('messageboxok').fadeTo(900,1);
   });
  }
 });
});
</script>

when i changed the whole register.php for testing to or the script worked...however with the original version it shows always that username is available...

+4  A: 

Best bet is to output the PHP variable as a hidden field or a JavaScript variable:

<input type="hidden" id="my_var" name="my_var" value="<?php echo($my_var); ?>" />

// access it like this:    
alert($('#my_var').val());

or

<script type="text/javascript">
    var my_var = <?php echo($my_var); ?>;
</script>

// access it like this
alert(my_var);

That should do it :-)

ILMV
A: 

Either you make a Jquery Ajax Request that will request a php page which will return whatever you want or you echo a javascript variable with php

<?php 
  echo '<script> var javascript_variable = "whatever"; </script>'; 
?>
acmatos
A: 

Hi,

It will work if you do

echo "1";

and then

if(result == "1") {

If it doesn't (but I've checked on a code of mine without the quotes, it didn't work, with, it was ok), check the response from Firebug console.

Michael Lumbroso
nah..i tried this already..doesn't work :(
cthulhu
then in the page register.php, you've got to have other elements besides your echo "1" (check your includes). What does the firebug console tells you in the response part?
Michael Lumbroso
I see that in your $.post there is no submit : true ou submit : *, so $_POST['submit'] doesn't exist.
Michael Lumbroso
hell it worked one time...now it doesn't...updated the code...
cthulhu
A: 

In situations where my company's application needs to call Jquery on a dynamic element and we have the Jquery call IN the php file we'll directly call php in the Jquery call.

For example:

alert($('#').val());

Not for all situations, certainly. If you have to call a variable where you don't have PHP access to the file (possibly such as a .tpl file, depending on your setup) you might resort to setting a hidden input as detailed above.

bpeterson76
but that's not the case...i need to post firstly and then get a value...and now the problem is with setting up the post values in jquery the right way
cthulhu
A: 

The problem was that jQuery ran the entire code if the name was not in the database... So, the INSERT INTO query also ran and added the user on the check... I think i will solve this somehow..probably with exit; in php...

cthulhu