Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > один запрос ajax


Автор: Master_ 1.8.2007, 23:09
Вобщем есть у меня страничка на аякс. При нажатии на страну с помощью аякса появляются города этой страны. Так вот, можно нажимать на ссылку сколь угодно раз, и все время появляются одни и те же города, а мне нуэно ограничить запрос до одного, нажал на страну - открылся список, остальные5 нажатия на ссылку блокируются.
Как ограничить JS запрос на один раз?

Автор: Astraller 2.8.2007, 12:25
Сделайте себе глобальную переменную - флаг. Например:
Код

var flag=0;
...
function sendRequest (){
if (flag==0){
flag=1;
...
}
}

Автор: lexxICON 2.8.2007, 13:14
Или косвенно проверять - наличие текста в поле городов или тп

Автор: Master_ 3.8.2007, 09:43
К сожалению с флагом думаю не получится..
Потому что если делать так как написано во втором посте, можно будет открыть города только одной страны. Тоесть у меня в функцию передается id страны, по которому должны открываться города. 
Так вот, открыть любую страну - и флаг будет равным одному, тоесть у всех остальных стран города открыть не получится.

Как бы решить это?

Автор: Mymik 3.8.2007, 10:34
Master_, флаг не обязательно должен быть нулем или единицей... это может быть код этой страны или города...

Автор: Master_ 3.8.2007, 10:37
А что хорошего если то код страны?

Ведь можно будет выбрать другую страну, соответственно id флага сменится, и предыдущий открытый id можно будет открыть вновь..

Автор: Master_ 3.8.2007, 12:04
Написал в коде это
Код

        $flag = array();
        $flag[] = $id;
        if ( in_array($flag, $id) )
        {
            exit();
        }

Но это неправильно...
Это в ф-ии, вызываемой яваскриптом.

Автор: Mymik 4.8.2007, 09:03
Цитата(Master_ @  3.8.2007,  09:43 Найти цитируемый пост)
Потому что если делать так как написано во втором посте, можно будет открыть города только одной страны. Тоесть у меня в функцию передается id страны, по которому должны открываться города. 

Вроде бы это твои слова. Следовательно, если ты запомнишь код передаваемой страны в этот флаг и будешь проверять, то ты избежишь повторных загрузок.
Т.е. приходит код страны 111 ты проверил что находится во флаге, если такое же число, то делаешь return; иначе записываешь новый код страницы и отправляешь AJAX запрос для загрузки городов.
Или у тебя коллизии в СУБД ??? список городов для разных стран идут под одним номером ???

Цитата(Master_ @  3.8.2007,  10:37 Найти цитируемый пост)
Ведь можно будет выбрать другую страну, соответственно id флага сменится, и предыдущий открытый id можно будет открыть вновь.. 
Это уже совсем другой вопрос и ты не оговаривал его в первом посте.
Тогда забей на флаг вообще, он тебе не понадобиться,- тебе нужен будет какой-нибудь массив типа JSON (если ты принимаешь данные в этом виде, так вообще сказка). Дальше ты просто пробегаешься по этому массиву и выцепляешь данные нужные тебе. Но, ИМХО лишний геморой... 

Автор: Master_ 4.8.2007, 10:13
Проверку есть ли код во флаге - я пробовал написать код, но не получалось, может приведешь пример?  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)