За последние 24 часа нас посетили 38264 программиста и 1281 робот. Сейчас ищут 933 программиста ...

Как передать переменную в PHP-скрипт при его загрузке?

Тема в разделе "JavaScript и AJAX", создана пользователем Freakmeister, 4 окт 2011.

  1. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Нужно передать php-скрипту значение window.location.hash до непосредственного вывода страницы через echo (это умеет делать только JavaScript). Пробовал делать так:

    [js]
    $(document).ready(function() {
    $.ajax({
    type: "POST",
    cache: false,
    url: "inex.php",
    data: "hash="+document.location.hash,
    success: function($content){
    $("#content").html($content);
    }
    });

    } ); /* END OF document.ready */[/js]

    Но страница при этом явно грузится два раза. А если я при этом ещё и аджаксю какие-то действия на странице по событию .click например, то по клику происходит 3 загрузки страницы и ужасные лаги. Собссна, как отсылать этот POST-запрос документу только один раз - при его загрузке? Может я нублю, но $(document).ready чот не прокатывает.
     
  2. Михаил

    Михаил Активный пользователь

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    если я правильно понял, то у вас есть набор каких-то ссылок с якорями #1, #2, #3. И вы хотите при клике на них подгрузить нужный контент? или не правильно понял?
     
  3. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Нет, мне нужно чтобы при обращении к index.php, первым делом из адресной строки вытаскивался hash и записывался в переменную. И дальше php-скрипт действовал относительно этой переменной - например, выдавал пользователю галерею если хэш равен #gallery или форум, если хэш равен #forum. Этакая навигация на AJAX, с возможностью обмена ссылками. Вот только не пойму по какому действию значение хэша можно вытащить - $(document).ready и $(document).load чего-то не срабатывают. Или я чего-то совсем не догоняю. =\
     
  4. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    это не может быть из за того, что вместо url: "index.php" написано url: "inex.php" ?
     
  5. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Нет, у меня там вообще другое имя фала, inex.php я написал здесь для примера.)
     
  6. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    В $content случаем не полную страницу отдаешь? Если там есть жававскипты, то они будут выполняться.
    А вообще гадать на куске кода и путанном описании как-то даже неприлично.
     
  7. Михаил

    Михаил Активный пользователь

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    Да дайка пхп код, этот работает нормально.
     
  8. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Короче я сделал так в начале php-скрипта:

    PHP:
    1. <?php
    2. if (!$_POST['ajaxed']) {
    3. echo '
    4. <script type="text/javascript">
    5.    $.ajax({
    6.        type: "POST",
    7.        cache: false,
    8.        url: "index.php",
    9.        data: "ajaxed=1&sortby=th"+document.location.hash.slice(1),
    10.        success: function($content){
    11.            $("#content").html($content);
    12.        }
    13.    });
    14. </script>';
    15. }
    16. ?>
    Повесил якорь ajaxed, который сигналит проаджаксилась ли страница - предохранитель от зацикливания, когда страница аджаксит саму себя. В итоге, при загрузке страницы я имею значение хэша, записанное в $_POST - прямо как во вконтакте.)) Держать JS в php-скриптах конечно же не красиво, но другого способа я не нашёл. Можно разве что попытаться как то дёргать значения $_POST через JS, тогда от if-else средствами php можно будет избавиться. Покажу как оно работает, как запущу на хостинге, ежели кому интересно. :)