Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: как передать результат выполения Ajax в віпадаючий список.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
eboome
Отправлено: 29 Августа, 2014 - 18:34:57
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Авг. 2014  


Помог: 0 раз(а)




Здраствуйте! Есть форма которая используеться для поиска пользователей:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <p><span>by chef</span></p>
  3. <input name="searchchef" type="text" id="__searchchef__">
  4.  

функцию поиска предоставлять не буду, так как она работает отличноУлыбка

есть аякс:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.     function getUserByNick()
  3.     {
  4.         var searchchef = $("input[name=searchchef]").val();
  5.       $.ajax({
  6.         type: "POST",
  7.         url: "m/recipes/GetUserNickName",
  8.         data: {"searchchef": searchchef},
  9.         cache: false,                                
  10.         success: function(res){
  11.            console.log(res);
  12.            
  13.         }
  14.     });
  15.       return false;
  16.     }
  17. $('input[name=searchchef]').keyup(function(){
  18.     getUserByNick();
  19. });


есть функция которая обрабативает аякс:
PHP:
скопировать код в буфер обмена
  1.     function getUserNick($searchdata)
  2.     {
  3.        
  4.         $req = $this->getAll($sQuery = "SELECT NickName from Profiles WHERE NickName LIKE '%{$searchdata}%' limit 10");
  5.     ...  
  6.  

даная функция возвращает масив имен, типу ['andrew','roman','admin'] если я ввожу только букву "а"
Суть вопроса: как сделать так чтоб етот масив передать в выпадающий список, так как в Jquery autocomplete

(Отредактировано автором: 29 Августа, 2014 - 18:36:33)

 
 Top
Viper
Отправлено: 29 Августа, 2014 - 20:20:13
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Вам выпадающий список построить на основе массива?
Если да, то в success:

CODE (javascript):
скопировать код в буфер обмена
  1. var select = $('select'),
  2.         list = '';
  3.  
  4. $.each(res, function(i, val){
  5.         list += '<option value="'+ val +'">'+ val +'</option>';
  6. });
  7.  
  8. select.append(list);


А если вам нужно прям как в Jquery autocomplete то не проще ли его использовать?


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
eboome
Отправлено: 01 Сентября, 2014 - 14:32:51
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Авг. 2014  


Помог: 0 раз(а)




Viper пишет:
Вам выпадающий список построить на основе массива?
Если да, то в success:

CODE (javascript):
скопировать код в буфер обмена
  1. var select = $('select'),
  2.         list = '';
  3.  
  4. $.each(res, function(i, val){
  5.         list += '<option value="'+ val +'">'+ val +'</option>';
  6. });
  7.  
  8. select.append(list);


А если вам нужно прям как в Jquery autocomplete то не проще ли его использовать?


что то так не получаетьсяНедовольство, огорчение

вот моя функция:
PHP:
скопировать код в буфер обмена
  1. function getUserNick($searchdata)
  2.     {
  3.        
  4.         $result = $this->getAll($sQuery = "SELECT NickName from Profiles WHERE NickName LIKE '%{$searchdata}%' limit 10");
  5.      
  6.         $result_arr = array();
  7.          foreach ($result as $k){
  8.           $result_arr['NickName'][] = $k['NickName'];
  9.                  }
  10.                  
  11.                $res = $result_arr['NickName'];
  12.                 print_r($res);
  13. //              
  14.        
  15.     }


Она возвращает такой массив:
PHP:
скопировать код в буфер обмена
  1. (
  2.     [0] => Earls_Organic_Produce
  3.     [1] => Metro_Denver_Farmers_Market
  4.     [2] => Richard_Perot
  5.     [3] => robert
  6. )


вот ajax запрос
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function getUserByNick()
  3.     {
  4.         var searchchef = $("input[name=searchchef]").val();
  5.       $.ajax({
  6.         type: "POST",
  7.         url: "m/recipes/GetUserNickName",
  8.         data: {"searchchef": searchchef},
  9.         cache: false,                                
  10.         success: function(res){
  11.             console.log(res);
  12.            var select = $('select'),
  13.            list = '';
  14.  
  15.           $.each(res, function(i, val){
  16.            list += '<option value="'+ val +'">'+ val +'</option>';
  17.             });
  18.  
  19.               select.append(list);
  20.            
  21.               }
  22.           });
  23.       return false;
  24.     }
  25. $('input[name=searchchef]').keyup(function(){
  26.     getUserByNick();
  27. });


у меня ошибка js:
CODE (javascript):
скопировать код в буфер обмена
  1. Uncaught TypeError: Cannot use 'in' operator to search for '242' in Array
  2.  
 
 Top
Viper
Отправлено: 01 Сентября, 2014 - 15:24:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




eboome пишет:
Она возвращает такой массив:
верните нормальный JSON, а не куйню.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
eboome
Отправлено: 01 Сентября, 2014 - 16:18:57
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Авг. 2014  


Помог: 0 раз(а)




вернул json:
PHP:
скопировать код в буфер обмена
  1.  function getUserNick($searchdata)
  2.     {
  3.        
  4.         $result = $this->getAll($sQuery = "SELECT NickName from Profiles WHERE NickName LIKE '%{$searchdata}%' limit 10");
  5.      
  6.        
  7.          foreach ($result as $i=>$k){
  8.           $result_arr[$i]['nn'] = $k['NickName'];
  9.                  }
  10.           echo  json_encode($result_arr);    
  11.              
  12.        
  13.     }


немножко изменил ajax:

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.     function getUserByNick()
  3.     {
  4.         var searchchef = $("input[name=searchchef]").val();
  5.       $.ajax({
  6.         type: "POST",
  7.         url: "m/recipes/GetUserNickName",
  8.         dataType: "json",
  9.         data: {"searchchef": searchchef},
  10.         cache: false,                                
  11.         success: function(res){
  12.         var select = $('select'),
  13.            list = '';
  14.  
  15.           $.each(res, function(i, val){
  16.            list += '<option value="'+ val['nn'] +'">'+ val['nn'] +'</option>';
  17.             });
  18.  
  19.               select.append(list);
  20.            
  21.               }
  22.           });
  23.       return false;
  24.     }
  25. $('input[name=searchchef]').keyup(function(){
  26.     getUserByNick();
  27. });


Но вопрос как прикрутить етот список к форме?
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <p><span>by chef</span></p>
  3. <input name="searchchef" type="text" id="__searchchef__">
 
 Top
Viper
Отправлено: 01 Сентября, 2014 - 17:12:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




eboome пишет:
Но вопрос как прикрутить етот список к форме?


CODE (html):
скопировать код в буфер обмена
  1. <p><span>by chef</span></p>
  2. <input name="searchchef" type="text" id="__searchchef__">
  3. <select name="searchchef_list" id="searchchef_list"></select>


замените
CODE (htmlphp):
скопировать код в буфер обмена
  1. var select = $('select'),
на
CODE (htmlphp):
скопировать код в буфер обмена
  1. var select = $('#searchchef_list'),


select можно заменить на div или список. Позиционировать относительно input'а с помощью CSS.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
eboome
Отправлено: 03 Сентября, 2014 - 12:54:53
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Авг. 2014  


Помог: 0 раз(а)




короч мучался долго, так и не решив етого задания. Сделал через jquery autocomplete. Спасибо Viper!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB