Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> javascript jquery, определить существование переме 
V
    Опции темы
gcc
Дата 29.6.2010, 05:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



не могу понять с одной штукой, может я делаю как-то сложно...

есть код:

Код

$(".groups_members").live("click", function(){



    var hash = {};
    
    hash =
{
        'page' : '0',
        'sort' : '0',
        'asc' : '0',

        
}



    hash['page'] = this.hash.replace(/.*(?:page=)(\d+).*/,'$1');
  hash['sort'] = this.hash.replace(/.*(?:sort=)(\d+).*/,'$1');
 hash['asc'] = this.hash.replace(/.*(?:asc=)(\d+).*/,'$1');

  if (! hash['sort'] > 0) {
    hash['sort'] = "0";
  }

  if (!hash['page'] > 0) {
   hash['page'] = "0";
  }
  
  if ( hash['asc'] < 1) {
   hash['asc'] = 0;
  }  


$.getJSON("/groups/groups_member_view/6/0/"+ hash['sort']+"/"+hash['asc'], function(msg) {   



    if (msg.success_ok > 0) {









        $("#blog_un").html("");        

$(".info_view").html("<b>Просмотр пользователей в этой группе:</b>");  



    var text_asc;
if (  hash['asc'] < 1) {
        text_asc = "&asc=1";
        } else  {
        text_asc = "";
        }
        

var line;
 if (hash['asc']) {
  line =  "<img src='/images/sort_up.gif'  border='0'  />"; 
 } else {
   line =  "<img src='/images/sort_down.gif'  border='0'  />"; 
 }
 

      var text_username_sort = "";
     var text_count_thread_sort = "";
     var text_count_comment_sort = "";
     var text_count_energy_sort = "";
     var text_created_sort = "";
      
      
      
  if (hash['sort'] == 1) {
     text_username_sort = line;
  }  

  else if (hash['sort'] == 2) {
      text_count_thread_sort = line;
  }

  else if (hash['sort'] == 3) {
      text_count_comment_sort = line;
  }


  else if (hash['sort'] == 4) {
      text_count_energy_sort = line;
  }


  else if (hash['sort'] == 5) {
      text_created_sort = line;
  }

  else {
      text_created_sort = line;
  }



все работает, кроме:

проблема в том что может быть будет в ссылке сущность page=666 sort=666, а может не быть...

и получется что hash['page'] равняется какому-то не определенному значению... НЕ undefined

и ошибку получется тут 
Код
$.getJSON("/groups/groups_member_view/6/0/"+ hash['sort']+"/"+hash['asc'], function(msg) {   


как тут сделать что если hash['sort'] не определено то заменить его на '0'

тут я использовал переменную var sort, потом сделал хэш

пробовал проверить это значение через  typeof но не получается...

Код
  
  if ( typeof eval(asc) == "undefined" ) {
   asc = "0";
  }  


как это можно сделать?
PM WWW ICQ Skype GTalk Jabber   Вверх
CruorVult
Дата 29.6.2010, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 13
Всего: 28



Не вижу где у вас asc - переменная.
Может: 

Код

  if ( typeof(hash['asc']) == "undefined" ) {
   asc = "0";
  }  



Это сообщение отредактировал(а) CruorVult - 29.6.2010, 09:24
PM MAIL Skype   Вверх
ksnk
Дата 29.6.2010, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Код

$.getJSON("/groups/groups_member_view/6/0/"+ (hash['sort']||'0')+"/"+(hash['asc']||'0'), function(msg)
...



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
gcc
Дата 29.6.2010, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



ksnk, 
CruorVult, 

не работает, asc просто ничему не определено... то как я написал в первом посте
(а если asc определено и равняется 1 - то все работает!!!)

я с этой проблемой так затрахался что ужас...

видимо тут проблема с типизацией на javascript, надо пойти другим путем...

Это сообщение отредактировал(а) gcc - 29.6.2010, 15:20
PM WWW ICQ Skype GTalk Jabber   Вверх
CruorVult
Дата 29.6.2010, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 13
Всего: 28



надеюсь ты так писал:
Код

if ( typeof(hash['asc']) == "undefined" ) {
   hash['asc']= "0";
 }  

а не 
Код

if ( typeof(hash['asc']) == "undefined" ) {
   asc = "0";
 }  

PM MAIL Skype   Вверх
gcc
Дата 29.6.2010, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



CruorVult, да именно

или 
так

Код

if ( typeof(asc) == "undefined" ) {
   asc= "0";
 }  


Это сообщение отредактировал(а) gcc - 29.6.2010, 15:22
PM WWW ICQ Skype GTalk Jabber   Вверх
CruorVult
Дата 29.6.2010, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 13
Всего: 28



выведи 
Код

alert(typeof(hash['asc']));


Это сообщение отредактировал(а) CruorVult - 29.6.2010, 15:23
PM MAIL Skype   Вверх
gcc
Дата 29.6.2010, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



вывело:
Код

string

PM WWW ICQ Skype GTalk Jabber   Вверх
CruorVult
Дата 29.6.2010, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 13
Всего: 28



ну так правильно:
Код

 if (! hash['sort'] > 0) {
    hash['sort'] = "0";
  }

  if (!hash['page'] > 0) {
   hash['page'] = "0";
  }
  
  if ( hash['asc'] < 1) {
   hash['asc'] = 0;
  } 


посмотри что в 
Код

"/groups/groups_member_view/6/0/"+ hash['sort']+"/"+hash['asc']



Это сообщение отредактировал(а) CruorVult - 29.6.2010, 15:38
PM MAIL Skype   Вверх
gcc
Дата 29.6.2010, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



CruorVult, оно срабатывает почему-то через раз...

перывй раз я зашел на страницу без href='#'  -  все нормально

тут то что Вы подсказали меняет hash['asc'] на 0



НО

а если href чему-то равняется, то:

проблема именно что рубает тут: 
Код

 hash['asc'] = this.hash.replace(/.*(?:asc=)(\d+).*/,'$1');
 

и после этого 

это выводит:
Код

        alert(typeof(hash['asc']));


Код

string


и на это: 
Код

   if ( hash['asc'] < 1) {
   hash['asc'] = 0;
  } 

(или на подобное)
не реагирует...

может сделать так чтобы это this.hash.replace(/.*(?:asc=)(\d+).*/,'$1'); ВСЕГДА возвращало цифры, а если цифры нету, то постаивть '0'

т.е. href='#asc=0'


=====

Вот я полностью покажу код который сейчас. проблема именно эта которую я описал....

Код


$(".groups_members").live("click", function(){



    var hash = {};
    
    hash =
{
        'page' : '0',
        'sort' : '0',

        
}


var asc = "0";

    hash['page'] = this.hash.replace(/.*(?:page=)(\d+).*/,'$1');
  hash['sort'] = this.hash.replace(/.*(?:sort=)(\d+).*/,'$1');
 hash['asc'] = this.hash.replace(/.*(?:asc=)(\d+).*/,'$1');





  if (! hash['sort'] > 0) {
    hash['sort'] = "0";
  }

  if (!hash['page'] > 0) {
   hash['page'] = "0";
  }
  
  if ( hash['asc'] < 1) {
   hash['asc'] = 0;
  } 

        alert(typeof(hash['asc']));

$.getJSON("/groups/groups_member_view/<TMPL_VAR NAME="id_gr">/0/1/"+(hash['asc']||'0')+"", function(msg) {   



    if (msg.success_ok > 0) {








Это сообщение отредактировал(а) gcc - 29.6.2010, 16:12
PM WWW ICQ Skype GTalk Jabber   Вверх
CruorVult
Дата 29.6.2010, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 13
Всего: 28



Что вообще в консоле ошибок пишет?
я же говорю, выведи 
Код

alert("/groups/groups_member_view/6/0/"+ hash['sort']+"/"+hash['asc']);

если там типа
Код

"/groups/groups_member_view/6/0/5/0

значит на клиенте всё нормально. возможно такой запрос сервер не воспринимает
PM MAIL Skype   Вверх
gcc
Дата 29.6.2010, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



CruorVult, 


Код

alert("/groups/groups_member_view/6/0/"+ hash['sort']+"/"+hash['asc']);


я поставил даже, так:

Код

alert("/groups/groups_member_view/6/0/1/"+hash['asc']);


там где hash['asc'] не опредедлено, выводит:
Код

/groups/groups_member_view/6/0/1/#sort=1


проблема таки в парсинге, он выводит ссылку #sort=1

которая href='#sort=1'

сейчас попробу тут hash['asc'] сделать проверку на цифру



Это сообщение отредактировал(а) gcc - 29.6.2010, 16:24
PM WWW ICQ Skype GTalk Jabber   Вверх
CruorVult
Дата 29.6.2010, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 13
Всего: 28



Цитата(gcc @  29.6.2010,  16:20 Найти цитируемый пост)
проблема таки в парсинге, он выводит ссылку #sort=1

вот-вот, пользуйся алертом и будет тебе счастье
и про консоль ошибок не забывай smile 
PM MAIL Skype   Вверх
CruorVult
Дата 29.6.2010, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 13
Всего: 28



еще не разобрался? smile
измени немного регулярку:
Код

this.hash.replace(/.*(?:asc=)(\d*).*/,'$1')

а то прежняя в таком случае 
Код
 #asc=&page=1

оставляла всё после asc= 
теперь в таком случае будет пустая строка, ну дальше уже как-то сам smile

Это сообщение отредактировал(а) CruorVult - 29.6.2010, 17:37
PM MAIL Skype   Вверх
ksnk
Дата 29.6.2010, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Что выводит код
Код

alert("/groups/groups_member_view/6/0/"+ (hash['sort']||'0')+"/"+(hash['asc']||'0'));

?
Или регулярки с многострочными условиями выглядят привлекательнее?  smile 

Это сообщение отредактировал(а) ksnk - 29.6.2010, 17:24


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
CruorVult
Дата 29.6.2010, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 13
Всего: 28



Цитата(ksnk @  29.6.2010,  17:23 Найти цитируемый пост)
Или регулярки с многострочными условиями выглядят привлекательнее?


так регулярка парсит локейшн и достает нужное знаечение из переменной, без нее никак smile

Добавлено через 2 минуты и 3 секунды
hash['asc'] существует, только в него записано #sort=1
PM MAIL Skype   Вверх
ksnk
Дата 29.6.2010, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Цитата(CruorVult @  29.6.2010,  17:32 Найти цитируемый пост)
так регулярка парсит локейшн и достает нужное знаечение из переменной, без нее никак

таки да... недочитал что тут делается... 

Код

    hash['page'] = this.hash.replace(/.*(?:page=)(\d+).*/,'$1');
  hash['sort'] = this.hash.replace(/.*(?:sort=)(\d+).*/,'$1');
 hash['asc'] = this.hash.replace(/.*(?:asc=)(\d+).*/,'$1');

крайне занимательный способ выковырять значения из хеша... и судя по странице комментов - крайне результативный smile
Можно вот так, например
Код

var reg=/[#&](\w+)=(\w*)/g;
var result,hash={};
while(result=reg.exec(this.hash)){
  hash[result[1]]=result[2];
}

результат получится значительно более предсказуемый, imho 

Это сообщение отредактировал(а) ksnk - 29.6.2010, 17:57


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
CruorVult
Дата 29.6.2010, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 13
Всего: 28



Цитата

результат получится значительно более предсказуемый, imho 


согласен. да и смысла нету по одной переменной вытягивать smile

Это сообщение отредактировал(а) CruorVult - 29.6.2010, 18:06
PM MAIL Skype   Вверх
gcc
Дата 29.6.2010, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



спасибо, разобрался, гемороя много было...
PM WWW ICQ Skype GTalk Jabber   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0944 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.