#php #javascript #ajax #jquery
#php #javascript #ajax #jquery
Вопрос:
У меня есть функция загрузки ajax, которая использует jQuery при <a><a/>
нажатии далее по странице.
Это также запускает установку cookie, так что открытый документ сохраняется, если пользователь возвращается.
<a id="request" onClick="createCookie('foobar')">Click me</a>
<div id="result" class="functions">
</div>
<script type="text/javascript">
$.ajaxSetup ({
cache: false
});
var ajax_load = "<img class='loading' src='loading.gif' alt='loading...' />";
var loadUrl<?=$request->id?> = "viewrequest.php?id=<?=$request->id?>";
$("#display").click(function(){
$("#result").html(ajax_load).load(loadUrl);
var loaded<?=$request->id?> = 1
});
</script>
</div>
Это работает нормально. Что я хочу сделать, так это использовать php, чтобы увидеть, существует ли cookie (легко).
if(isset($_COOKIE['foobar']))
а затем запустите AJAX.
Это то, что я не могу понять, как сделать. Я предполагаю, что id =»request» в < a> запускает AJAX при нажатии, но я не могу придумать, как это сделать при загрузке внутри цикла php if.
Комментарии:
1. Я решил это, <? if…. { ?> <script> $(«#result»).html(ajax_load).load(loadUrl); var loaded = 1 <скрипт> <? } ?>
Ответ №1:
Это должно сработать (непроверено, но логика хорошая)
<?php if(isset($_COOKIE['foobar'])): ?>
<script type="text/javascript">
$(document).ready(function(){
var ajax_load = "<img class='loading' src='loading.gif' alt='loading...' />";
var loadUrl<?=$request->id?> = "viewrequest.php?id=<?=$request->id?>";
$("#display").click(function(){
$("#result").html(ajax_load).load(loadUrl);
var loaded<?=$request->id?> = 1
});
});
</script>
<?php endif; ?>
Ответ №2:
использовать
$(window).load(function(){
//code
});
или
$(document).ready(function(){
//code
});
в зависимости от того, когда вам действительно нужно это выполнить.
окно.загрузка будет ждать загрузки полного DOM.
document ready не ожидает завершения всех запросов
Комментарии:
1. Мне это нужно, чтобы запустить то, что в данный момент находится внутри тегов <script>
2. Затем оберните содержимое внутри функции и вызовите это. Вы не можете сказать «иди, выполни этот блок скрипта». но вы можете сказать «do_this();»
3. Я решил это, <? if…. { ?> <script> $(«#result»).html(ajax_load).load(loadUrl); var loaded = 1 <скрипт> <? } ?>
Ответ №3:
PHP не может напрямую запускать javascript. Помните, что PHP выполняется на сервере, в то время как Javascript выполняется на клиенте.
Самое большее, PHP может вывести небольшой фрагмент javascript во время сборки страницы и встроить вызов функции в этот фрагмент>
<?php
if (isset($_COOKIE['foobar'])) {
echo <<<EOL
<script type="text/javascript">
the_cookie_is_set();
</script>
EOL;
}
?>
который затем запустил бы вашу функцию, когда страница загружена / обработана клиентом.
Однако, поскольку вы используете AJAX, это означает, что у вас был Javascript, который отправлял что-то на сервер и получал ответ. Почему бы не использовать обработчик ответа для запуска этой функции?
Комментарии:
1. Я полагаю, что AJAX в JS на моей странице вызывается только при нажатии < a>, поскольку его id =»request» соответствует идентификатору в AJAX, поэтому мне нужно сделать то же самое внутри цикла php if и onLoad, а не onClick
2. Я решил это, <? if…. { ?> <script> $(«#result»).html(ajax_load).load(loadUrl); var loaded = 1 <скрипт> <? } ?>