Вызов некоторого jQuery при загрузке страницы

#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 <скрипт> <? } ?>