Получение значения переменной из PHP с помощью jQuery

Итак, как мне получить значение переменной из php-файла с jquery …? код jquery находится в другом файле (tpl)

например, у меня есть register.php и register.tpl (файл шаблона для 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 … другие входы … $ ("# 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> 

когда я изменил весь файл register.php для тестирования или скрипт работал … однако с исходной версией он всегда показывает, что имя пользователя доступно …

Лучше всего вывести переменную PHP как скрытое поле или переменную JavaScript:

 <input type="hidden" id="my_var" name="my_var" value="<?php echo($my_var); ?>" /> // access it like this: alert($('#my_var').val()); 

или

 <script type="text/javascript"> var my_var = <?php echo($my_var); ?>; </script> // access it like this alert(my_var); 

Это должно сделать это 🙂

Либо вы делаете запрос Jquery Ajax, который будет запрашивать php-страницу, которая вернет вам то, что вы хотите, или вы эхо-переменную javascript с php

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

Он будет работать, если вы это сделаете

 echo "1"; 

а потом

 if(result == "1") { 

Если это не так (но я проверял код без кавычек, он не работал, с ним все было в порядке), проверьте ответ с консоли Firebug.

В ситуациях, когда приложение моей компании нужно вызвать Jquery в динамическом элементе, и у нас есть вызов JQuery В php-файл, мы будем напрямую вызывать php в вызове JQuery.

Например:

оповещения ($ ( '#') Вал ().);

Не для всех ситуаций, конечно. Если вам нужно вызвать переменную, в которой у вас нет доступа к файлу PHP (возможно, такого как .tpl-файл, в зависимости от вашей установки), вы можете прибегнуть к настройке скрытого ввода, как описано выше.