PHP не поддерживает состояние между несколькими запросами.Это означает, что автономный PHP не может хранить переменные в памяти между запросами.Сеансы сохраняются на диск (по умолчанию), файлы конфигурации должны быть повторно проанализированы и т. Д.
Если вы хотите сохранить переменные между двумя запросами, вы можете использовать сеансы илиjson_encode()
ваших переменных и повторите их через jQuery.
В отношении сервера ваш XHR-запрос такой же, как если бы вы запрашивали страницу в браузере.Это совершенно другой запрос.
Что касается невозможности доступа к переменным сеанса, вам необходимо убедиться, что вы вызываете session_start()
(возможно, с правильным session_name()
звоните раньше, посмотрите на свои куки, чтобы выяснить это) в вашем извлеченном скрипте.
РЕДАКТИРОВАТЬ: Используя json_encode()
относительно легко.Сначала подготовьте все переменные, которые вы хотите передать в ассоциативный массив, затем вызовите json_encode()
.
$myVars = array();
$myVars['important'] = 'very';
$myJsVars = json_encode($myVars);
Затем, в вашем <head>
, присвойте $myJsVar
Переменная JavaScript.
<script>var PHP_VARS = <?php echo $myJsVars; ?>;</script>
Когда вы вызываете .load
в jQuery, передайте вашу переменную в качестве второго параметра.
<script type="text/javascript">
jQuery.noConflict();
jQuery("#sidebarfeat").one('inview', function(event, isInView, visiblePartX, visiblePartY) {
if (isInView) {
// element is now visible in the viewport
jQuery("#sidebarfeat").load("/wp-content/themes/tgv1/featured.php", PHP_VARS,
function(responseText, textStatus, XMLHttpRequest) {
if(textStatus == 'error') {
jQuery('#sidebarfeat').html('There was an error making the AJAX request');
}});
}
});
</script>
featured.php
теперь сможет получить доступ к этим переменнымчерез $_GET
.