Проблема с Javascript, если заявление - PullRequest
0 голосов
/ 01 февраля 2010

Хорошо, я делаю панель входа и регистрации с помощью jquery и php. Короче говоря, если при регистрации возникают ошибки, он устанавливает несколько ошибок формы, перенаправляет обратно на страницу регистрации, javascript обнаруживает ошибки при использовании переменной php и заставляет ползунок показать себя.

Рабочий код: Над документом типа $errors = $form->num_errors; и вся подпрограмма $errors работает нормально.

Моя проблема в том, что у меня также есть подтверждение того, что форма была успешно отправлена. Использует

if(isset($_SESSION['regsuccess'])){
    $success = 1;
} else {
    $success = 0;
}

для установки переменной $success. Сумасшедшая вещь здесь в том, что это не работает с использованием той же процедуры, что и переменная $error. Я знаю, что условное выражение $success работает правильно, поскольку оно выводится ниже по странице.

Скрипт jQuery для слайдов:

$(document).ready(function() {

    var num_errors = "<?php $errors; ?>";
    var form_success = "<?php $success; ?>";

    // Expand Panel
    $("#open").click(function(){
        $("div#panel").slideDown("slow");
    });
    // Collapse Panel
    $("#close").click(function(){
        $("div#panel").slideUp("slow"); 
    });     

    // Switch buttons from "Log In | Register" to "Close Panel" on click
    $("#toggle a").click(function () {
        $("#toggle a").toggle();
    });      

    //this part works
    if(errors>0){
        $("div#panel").slideDown();
        $("#toggle a").toggle();
    }

        //this part doesn't
    if(form_success>0){
        $("div#panel").slideDown();
        $("#toggle a").toggle();        
    }

});

Демо-страница находится здесь http://demo.ivannovak.com/danlogin/index.php

Предложения будут оценены, спасибо!

1 Ответ

2 голосов
/ 01 февраля 2010

На вашей странице определена переменная errors, поэтому эта часть работает:

<script type="text/javascript" language="javascript"> 
<!--
errors = 0; // -->
</script> 

Ваш файл javascript не обрабатывается php, он обслуживается непосредственно веб-сервером, поэтому ваши переменные в том, что вы перечислили выше:

var num_errors = "<?php $errors; ?>";
var form_success = "<?php $success; ?>";

Те, кто поступают именно так к клиенту, не заменяются их значениями. Вам нужно переместить эти две строки на страницу, где у вас есть ошибки, а также удалить их из кавычек. Возьмите их из своего js и используйте это на своей странице:

<script type="text/javascript" language="javascript"> 
  var num_errors = <?php $errors; ?>;
  var form_success = <?php $success; ?>;
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...