2015-12-31 1 views
0

Я использую jquery .load(), чтобы показать php-файл, который в основном извлекает данные из таблицы. Внутри цикла while у меня есть переменная, которая проверяет ранжирование моего пользователя, однако на каждой .load() эта переменная кажется недоступной, и все в выражении if, содержащем эту переменную, исчезает.PHP сбрасывается/недоступна после загрузки jquery

Теперь я знаю об этом:

  • PHP работает, прежде чем какой-либо ответ браузера выдается клиенту, и все код выполняется на сервере. Переменные, объявленные в вашем файле PHP, уничтожены после запуска всего кода PHP; они «исчезают».
  • JavaScript запускается после начала реакции браузера, и весь код работает на клиенте. «Загружая» результат вывода файла PHP, , вы не получите никакого доступа к переменным PHP, а только вывод.

Однако, как я должен получить доступ к моей переменной таким образом?

Это линия, которая исчезает после .load()

<div id="deleteSB"> 
    <?php if($u_rank >= 2) { 
     ?>  
     <div style="float: left;margin-top:3px;margin-right:5px;" id="deletesb"> 
     <a href="<?php echo $siteurl;?>/forum?getDelSb=<?php echo $fetchshoutquer['id']; ?>"> 
     <img src="<?php echo $siteurl; ?>/img/delete.png" /></a></div>  
    <?php } ?> 
</div> 

Где $u_rank переменная, что мне нужно. Если я удалю этот оператор if, все будет хорошо.

Это JQuery:

function loadlink(){ 
     $('#loadshoutbox').load('http://localhost/shoutboxcontent.php'); 

    } 

    function loadlink2(){ 
     $('#shoutboxinput').load('http://localhost/shoutboxinput.php'); 
    } 

    loadlink(); // This will run on page load 
    loadlink2(); 
    setInterval(function(){ 
     loadlink() // this will run after every 5 seconds 
    }, 5000); 
    setInterval(function(){ 
     loadlink2() // this will run after every 60 seconds 
    }, 60000); 

Я думал хранить содержимое $u_rank в переменной JQuery, но тогда я не знаю, как это сделать с, если заявление ...

+1

Я все еще читаю, но я не думаю, что вы можете просто загрузить скрипт php и ожидать его работы. PHP работает до того, как делает страница, поэтому загрузка на PHP-странице будет просто пустой, правильной? Вам нужно сделать вызов AJAX, если вы хотите получить переменные PHP в свой скрипт. – ntgCleaner

+0

Пока работает нормально. И я использую AJAX для вставки новых данных в базу данных. У меня просто проблема с тем, что одна переменная недоступна после load() ... –

+0

Да, я просто не думаю, что вы можете просто загрузить такую ​​переменную, вам нужен еще один вызов AJAX, чтобы вернуть его.Или, если вы хотите эту переменную сразу после вызова AJAX при вставке данных, просто эхо на этом же скрипте и возвращайте данные, как ответ ниже – ntgCleaner

ответ

0

Итак, я думаю, вы ищете сессий. http://www.w3schools.com/php/php_sessions.asp

+0

Я не вижу никакой разницы между использованием обычной переменной и сеансом ... эта переменная сеанса также исчезнет? –

+0

Нет, переменные сеанса остаются, когда страница перезагружается. Не когда браузер закрыт. Тогда я посмотрю файлы cookie. – DaMaGeX

+0

Хорошо, я не могу поверить, что это действительно сработало ... спасибо! Кажется, это самый простой способ. –

0

Я считаю, что вы ищете $.post или AJAX называют

$.post('script.php', {variableIn:variableIn}, function(data){ 
    var u_rank = data; 
}); 

Вы должны вызвать PHP снова, чтобы захватить эту переменную из PHP скрипта. Это, конечно, очень упрощено, и вам нужно будет выяснить, какие данные вы возвращаете. Вы можете вернуть что-либо эхо из сценария PHP, используя этот код data.

Например. когда я вернусь несколько результатов из моего PHP скрипт:

echo $var1 . ":" . $var2; 

data возвращает "Переменная1 Variable2". Затем я использую split в моем вызове AJAX следующим образом:

$.post('script.php', {variableIn:variableIn}, function(data){ 
    var var1 = data.split(":")[0]; 
    var var2 = data.split(":")[1]; 
}); 
+0

Будет var u_rank = ; работать тогда? –

+0

Нет, javascript интерпретирует это как строку (и ей нужны кавычки). На этой странице страница уже запустила бы PHP, поэтому после этого PHP не будет разрешен. – ntgCleaner

+0

Спасибо. Я продолжу экспериментировать с вашим методом! –

Смежные вопросы