Как получить переменную из файла через .get ()

0

А последовал несколько примеров, но я просто не могу заставить его работать. После отправки формы я вызываю эту функцию:

function kontrola(){    
var jmeno = self.document.forms.newPassForm.user.value;
    $.get("checkMail.php?mail="+jmeno, function(jeObsazen){ 
        alert(jeObsazen); 
    }); 

return false;  
}

И PHP файл, где решено изменение переменной jeObsazen, выглядит так:

<?  
include "protected/_mysql.php";
$mail=$_GET['mail'];
$query = mysql_query("SELECT 'id' FROM 'users' WHERE 'name' = '".$mail."'");
$data=mysql_fetch_array($query);

if($data['id']==NULL) $jeObsazen = false;
else $jeObsazen = true;

?>
<script type="text/javascript" language="JavaScript">
var jeObsazen = <?echo $jeObsazen;?>
</script>

Единственное, что я хочу - показать в окне предупреждения, если переменная jeObsazen истинна или ложна. Теперь он включает все в теги, включая. Я слишком много спрашиваю? :))

Заранее благодарю за каждую помощь!

  • 2
    Файл php с javascript внутри него не будет интерпретироваться. Кстати, ваш скрипт ничего не возвращает
  • 0
    Какие данные из БД вы пытаетесь вернуть в $.get ?
Теги:
get

2 ответа

0

Попробуйте вернуть что-то из вашего PHP-скрипта:

<?  
include "protected/_mysql.php";
$mail=$_GET['mail'];
$query = mysql_query("SELECT 'id' FROM 'users' WHERE 'name' = '".$mail."'");
$data=mysql_fetch_array($query);

if($data['id']==NULL) $jeObsazen = false;
else $jeObsazen = true;

echo $jeObsazen;
?>

И помните, что jeObsazen в javascript будет строкой, а не логической

  • 0
    Если я повторяю это, он возвращает 1, если почта находится в БД, в противном случае он ничего не возвращает.
  • 0
    @ MichalSirůček 1 верно, вам повезло.
0

Прежде чем продолжить, добавьте некоторую обработку ошибок, чтобы убедиться, что ваш внутренний код работает. Это включает проверку запроса на отказ, и если он возвращает любые строки:

if( $query === false ) {
    // query failed, details can be reached in mysql_error()
} else if( mysql_num_rows( $query ) ) {
    // no data returned
} else {
    $data = mysql_fetch_array($query);
}

ПРИМЕЧАНИЕ. Удалите комментарии//и верните сообщение в случае сбоя.

Вы поблагодарите меня за это позже, когда вы задаетесь вопросом, почему ничего не возвращается, и причиной является отсутствие данных в db или плохой запрос!

Затем вам не нужны теги в вашем php, это не нужно. Вам просто нужно выгрузить переменную:

$data = mysql_fetch_array($query);
if( $data['id'] != NULL ) {
    echo $data['id']; // this will return the id to your javascript $.get call
}

Вот как это выглядит:

<?  
include "protected/_mysql.php";
$mail=$_GET['mail'];
$query = mysql_query("SELECT 'id' FROM 'users' WHERE 'name' = '".$mail."'");

if( $query === false ) {
    echo "Query failure";
} else if( mysql_num_rows( $query ) ) {
    echo "No data returned";
} else {
    $data = mysql_fetch_array($query);
    echo ( $data['id'] != NULL ); // returns 1 if user is not null, 0 otherwise
}

?>
  • 0
    Запрос работает, я использую этот кусок PHP в другом месте в моей сети, и есть работы. Я также проверил, правильно ли передана переменная для запроса. Проблема не в этом наверняка: /
  • 0
    Я не говорю, что это не работает, просто плохая практика - не проверять ошибки. Есть много причин, по которым он не будет работать в будущем из-за неверных данных или проблем с подключением к базе данных. Если вы прочитаете ответ снова, вы обнаружите, что это был только один из моих пунктов.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню