2015-05-15 4 views
7

Я пытаюсь реализовать таймер. Я узнал эту идею с должности SO.Как сделать мою переменную php доступной?

<?php 

    if(($_SERVER['REQUEST_METHOD'] === 'POST') && !empty($_POST['username'])) 
    { 
    //secondsDiff is declared here 
    $remainingDay  = floor($secondsDiff/60/60/24); 
    } 
?> 

Это мой PHP-код. Мои коды php, html и JS находятся на одной странице. У меня есть кнопка в моем html. Когда пользователь нажимает на странице HTML, она будет вызывать функцию Ajax

     //url:"onlinetest.php", 
         //dataType: 'json', 
         beforeSend: function() 
         { 
          $(".startMyTest").off('click'); 
          setCountDown(); 
         } 

Это будет вызывать метод(), который содержит строку в самом начале

 var days = <?php echo $remainingDay; ?>; 

Когда я запускаю страницу setCountDown , он говорит [еще до нажатия кнопки] "expected expression, got '<'" в приведенной выше строке. Мои сомнения

Почему эта переменная php заменяется до того, как я запускаю кнопку. Пожалуйста, дайте мне знать мотыгу, чтобы решить эту проблему или как изменить мою идею.

+1

Похоже, что вам нужно переименовать файл 'something.php' –

+0

Да, мое имя файла testOnlineTest.php –

+0

, если ваш' вар дней = ... 'строка во внешнем файла JavaScript, это будет не работает, поскольку он не проходит через парсер php. –

ответ

8

Проблема, поскольку начальной загрузки, $_POST значения не заполняются (пусто при первой загрузке),

Эта переменная установить неопределен, просто убедитесь, что вы инициализировать эту переменную кулака.

<?php 
// initialize 
$remainingDay = 1; 
if(($_SERVER['REQUEST_METHOD'] === 'POST') && !empty($_POST['username'])) 
{ 
    //secondsDiff is declared here 
    $remainingDay  = floor($secondsDiff/60/60/24); 
    echo json_encode(array('remaining_day' => $remainingDay); 
    exit; 
} 
?> 

<script> 
var days = <?php echo $remainingDay; ?>; 
$('.your_button').on('click', function(){ 
    $.ajax({ 
     url: 'something.php', 
     dataType: 'JSON', 
     type: 'POST', 
     beforeSend: function() { 
      // whatever processes you need 
     }, 
     success: function(response) { 
      alert(response.remaining_day); 
     } 
    }); 
}); 
</script> 

Это только основная идея, я просто добавил другие коды для этого конкретного примера, просто добавьте/изменить остальную часть вашей логики Thats, необходимую на вашей стороне.

+0

Да, спасибо. Позвольте мне проверить это. –

+0

@GopsAB просто используйте 'document.URL' или hardcode url, если хотите. – Ghost

+0

@GopsAB, хотя я бы посоветовал не идти по этому маршруту, ваши коды будут загромождать, просто отделите страницу PHP, которая фактически обрабатывает запрос, отправленный из JS, из ответа сделайте то, что вам нужно сделать. – Ghost

2

Попробуйте это,

var days = "<?php echo $remainingDay; ?>"; 
2

Вы можете передать php переменную в JS код как

var jsvariable ="<?php echo $phpvariable ?>"; 

Примечание:

Если вы когда-либо хотели передать json_encoded значение РНР, чтобы JS, вы можете сделать

var jsonVariable = <?php echo $json_encoded_value ?>; //Note that there is no need for quotes here 
Смежные вопросы