19:41

маленькое щячло
Надо выводить каждую секунд контент из who.php?id='.$id.', проблема в том что скрипт выводиться в цикле и из-за совпадения переменных понятное дело не работает)
Что изменить, или что использовать в таком случаи?
читать дальше

@темы: Ajax

Комментарии
10.11.2009 в 20:45

Торговец знаниями
Для начала было бы неплохо указать, какой js-фреймворк используется.
Ну и второе:
а это ничего, что у вас в id тега идёт переменная $ld, а в вызовах — $id?
11.11.2009 в 00:16

Ололо, а я вот фреймворк распознал (jQuery, ыгы?), а вот сути проблемы так и не понял, хотя честно вчитывался минут 10. Это что, весь вышеприведённый блок выводится в цикле, штоле? Короче доктор, поподробнее!
11.11.2009 в 08:19

Торговец знаниями
Tzota, это может быть и prototype примерно с тем же успехом. Они ж все по синтаксису похожи. А блок там выводится не совсем в цикле, а вызовы идут с интервалом.
11.11.2009 в 11:18

tven Гм. Ну если не прогать ни на jQuery, ни на prototype, то тогда они со стороны будут похожи, да. А если хоть чутка попрогать - то нет. Я бы сказал - общего у них только знак доллара. Концепция разная. А в частности - вышеприведённый код - это jQuery, потому что у него доступ к элементу производится как $('#id'), в то время как у prototype - $('id'). Ну и остальное всё.

А насчёт вывода - во-первых, в коде совершенно хаотично расставлены кавычки. Точнее - похоже на выдернутый кусок из PHP-кода, где печатают js. Во-вторых, автор говорит про "выводится в цикле", вы говорите - не совсем в цикле... Ну да, я понимаю, что товарищ хочет обновлять содержимое div'а раз в секунду, но не совсем понимаю, совпадение каких таких переменных его от этого удерживает.
11.11.2009 в 11:37

Торговец знаниями
Tzota, да, это я что-то стормозил спросонья (про фреймворки).
По поводу всего остального — есть смысл подождать ответов топикстартера.
11.11.2009 в 12:21

маленькое щячло
jquerry%)
ага, выдер из кода:) пхпшные $id местами криво переименовал)
11.11.2009 в 13:08

Торговец знаниями
Мохнорыл, ну и таки что? Вопрос решился?
11.11.2009 в 16:51

Гм. То есть вышеуказанный кусок кода печатается в цикле, где счётчиком служит $id ? Или наоборот, печатается в нескольких местах, а при этом $id остаётся одинаковым? Короче, было бы неплохо либо приложить нормальный кусок кода, либо нормальное описание того что надо и что этому мешает.
11.11.2009 в 18:39

маленькое щячло
        do {
            $time = time();
            if($time > $lots['lot_time']) {
                compilitLot($lots['lot_id']);
            }else {
                if($a == 6) {
                    $content .= '</tr><tr>';
                    $a=1;
                }
                $content .= '
        <td>
        <a href="index.php?showlot='.$lots['lot_id'].'">'.$lots['lot_name'].'</a><br>
        <a href="index.php?showlot='.$lots['lot_id'].'"><img src="img/'.$lots['lot_img'].'.jpg" height="120" width="90"></a><br>

        <DIV id="who'.$lots['lot_id'].'"></div>

<sсriрt>
    function show()
    {
        $.ajax({
            url: "\who.php?id='.$lots['lot_id'].'",
            cache: false,
            success: function(html){
                $("#who").html(html);
            }
        });
    }

    $(document).ready(function(){
        show();
        setInterval(\'show()\',1000);
    });
    </sсriрt>



        <form name="buy_lot" action="index.php?buy='.$lots['lot_id'].'" method="POST" enctype="multipart/form-data">
        <input type="submit" value="Сделать ставку" name="buy_botton" />
        </form></td>';
                $x++;
                $a++;
            }
        }
        while($lots=mysql_fetch_array($res));

11.11.2009 в 18:41

маленькое щячло
проблема в том что аяксовый скрипт при таких раскладах работает только один раз. А надо выводить 15-20 разных счетчиков..
11.11.2009 в 22:40

Мохнорыл По мне так решение примерно следующее:
1) Убираем быстро-быстро из цикла ВЕСЬ джаваскрипт, а уж тем более - множественное определение функции show. Заводим отдельный массив, куда в цикле прихораниваем $lots['lot_id']
2) При выходе из цикла ОДИН раз печатаем джаваскрипт с определением show, куда из PHP распечатываем список id-шников. И вот по этим айдишникам и бегаем в цикле - но в джаваскрипте!

Примерно так - работоспособность не проверял, но идея должна быть понятна:


11.11.2009 в 22:42

Тьху ты. Предыдущий коммент - мой, вопросы ко мне, если что )
11.11.2009 в 22:50

А вообще, если уж проникаться духом jQuery, то надо не накапливать никаких lot_ids и не печатать их, а просто сделать внутри show что-то вроде следуюшего:



function show()
{
$('div[id^=who]').each(function(){
$id = this.id.substr(3);
$.ajax({
url: "\who.php?id="+$id,
cache: false,
success: function(html){
$("#who"+$id).html(html);
}
});
});
}


12.11.2009 в 11:56

маленькое щячло
О, спасибо! Сегодня обязательно затестю
13.11.2009 в 21:30

маленькое щячло
А можно пожалуйста этот же кусок, но с указанием того как нумеровать дивы
14.11.2009 в 01:54

Мохнорыл Собссно, в обоих кусках предполагается тот же вариант именования, что был у вас. Что, всё не срастается? Сделать-выложить прототип?
14.11.2009 в 02:35

маленькое щячло
Да, если можно..
15.11.2009 в 15:01

маленькое щячло
Огромнейшее спасибо! Особенно за коменты в коде!
Жаль что на дайриках нельзя рейтинг\карму поднимать:)
16.11.2009 в 11:18

Мохнорыл Бггг ) Вельком )))

Расширенная форма

Редактировать

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail