PHP.SU

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

Страниц (20): « 1 [2] 3 4 5 6 7 8 9 ... » В конец

> Найдено сообщений: 298
Deonis Отправлено: 03 Октября, 2015 - 16:43:30 • Тема: Оптимизация JS и HTML DIV блока • Форум: Вопросы новичков

Ответов: 7
Просмотров: 344
pantela пишет:
Имеются 6 AJAX функции, все вызываются при открытии страницы
Для меня такой подход навечно останется загадкой. Почему бы не сделать один запрос, на сервере выполнить сценарии, которые вы собирались выполнять для всех шести? Ну да ладно... Если ближе к вопросу, то есть такой метод, как $[dot]ajaxSetup() (хоть и не очень рекомендованный), в котором можно установить параметры beforeSend и complete для всех ajax-запросов. Т.е. в beforeSend вы открываете прелоадер, а в complete - скрываете. Однако, скрывать в complete не подойдет, т.к. прелоадер будет скрыт после завершения первого же запроса. Для таких целей подойдут "Обещания" (Promise). В jQuery для таких целей есть объект Deferred со своими методами. Вот простой пример.

CODE (javascript):
скопировать код в буфер обмена
  1. var log = $('div'),
  2.     loader = $('span'); // это как бы ваш элемент с loading.gif
  3. $.ajaxSetup({
  4.     beforeSend: function(){
  5.         loader.show();
  6.     },
  7.     success: function(d){
  8.         log.append('<p>' + d + ' завершен</p>');
  9.     }
  10. });
  11. function foo1(){
  12.     return $.ajax({
  13.         url: '/echo/html/',
  14.         type: 'POST',
  15.         data: {delay: 3, html: 'Запрос 1'}
  16.     });
  17. }
  18. function foo2(){
  19.     return $.ajax({
  20.         url: '/echo/html/',
  21.         type: 'POST',
  22.         data: {delay: 5, html: 'Запрос 2'}
  23.     });
  24. }
  25. function foo3(){
  26.     return $.ajax({
  27.         url: '/echo/html/',
  28.         type: 'POST',
  29.         data: {delay: 1, html: 'Запрос 3'},
  30.     });
  31. }
  32.  
  33. $.when(foo1(), foo2(), foo3()).then(function(r1, r2, r3){
  34.     log.append('<strong>Все запросы завершены! Скрываем лоадер </strong>');
  35.     loader.fadeOut(3000);
  36. });
Deonis Отправлено: 01 Октября, 2015 - 18:03:24 • Тема: Как узнать регистр первой буквы в строке utf-8? • Форум: Кодировки и все смежное

Ответов: 3
Просмотров: 5376
PHP:
скопировать код в буфер обмена
  1. $chr = mb_substr ($str, 0, 1, 'utf-8');
  2. if( mb_strtolower($chr, 'utf-8') != $chr ) {
  3.         echo 'Верхний';
  4. } else {
  5.         echo 'Нижний';
  6. }
Deonis Отправлено: 01 Октября, 2015 - 12:40:40 • Тема: Удалить повторы слов в файле • Форум: Вопросы новичков

Ответов: 14
Просмотров: 702
seowin, т.к. файл большой и его структура такая же, как у csv-файлов, то я бы сделал так:
PHP:
скопировать код в буфер обмена
  1. $output = [];
  2. $voc = [];
  3. if (($fp = fopen('input_file.csv', 'r')) !== false) {
  4.     while (($data = fgetcsv($fp, 1000, '|')) !== false) {
  5.         $tmp = array_diff($data, $voc);
  6.         $voc = array_merge($voc,$tmp);                         
  7.         $output[] = $tmp;
  8.     }
  9.     fclose($fp);
  10. }
  11. // записываем обработанные данные в новый файл
  12. $fp = fopen('output_file.csv', 'w');
  13. foreach ($output as $fields) {
  14.     fputcsv($fp, $fields, '|');
  15. }
  16. fclose($fp);
P.S. Расширение файла не обязательно должно быть csv
Deonis Отправлено: 29 Сентября, 2015 - 19:06:42 • Тема: Плагин модальнова окна • Форум: JavaScript & VBScript

Ответов: 2
Просмотров: 475
sarmat, очень сомневаюсь, что вы найдёте плагин, который будет полностью отвечать вашим требованиям. В любом случае, придётся "допиливать" недостающее. Можете глянуть jQuery Popup Overlay. По крайней мере:
Цитата:
Flexible and customizable: Supports multiple popup instances, custom CSS3 animations and transitions
Если плагин позволит, то можно будет прикрутить jQuery draggable и будет практически полный набор.
Deonis Отправлено: 18 Сентября, 2015 - 00:04:52 • Тема: Поиск текста внутри тега, который обернут в другой тег • Форум: Регулярные выражения

Ответов: 4
Просмотров: 433
Skandalli, я не любитель регулярок, а в отношении парсинга HTML - неистово лютую )) Потому, что регулярные выражения никогда не были инструментом для этих целей. Поэтому даю вам такой вариант:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $html = '<div class=myclass1>
  3. текст
  4. <p> текст , который нужно выдернуть </p>
  5. </div>';
  6.  
  7. $dom = new DomDocument;
  8. $dom->loadHTML($html);
  9. $xpath = new DomXPath($dom);
  10. $p = $xpath->query("//div[contains(@class, 'myclass1')]/p");
  11. echo $p->item(0)->nodeValue; // текст , который нужно выдернуть
Deonis Отправлено: 04 Сентября, 2015 - 13:17:56 • Тема: Не получается передать на сервер JS массив с помощью ajax • Форум: JavaScript & VBScript

Ответов: 3
Просмотров: 862
surrealistic pillow, для передачи на сервер массивов и объектов, преобразовывать их в json-строку - нет смысла. На что, собственно, уже намекнул DelphinPRO. Если требуется, то для объектов (не массивов), используется метод $.param(), который генерирует url-кодированную строку вида key1=val1&key2=val2&key3=val3, подобно php-функции http_build_query().
В вашем случае, это может быть реализовано таким образом:
CODE (javascript):
скопировать код в буфер обмена
  1. // собираем все ссылки в массив
  2. var links = $('a.link').map(function(i, el){
  3.     return $(el).attr('href');
  4. }).get();
  5.  
  6. /**
  7. * теперь несколько вариантов для параметра data в методе ajax:
  8. */
  9. // или передаем массив без ключа
  10. data:  links
  11. // или с ключем
  12. data:  {some_key: links}
  13. // или с ключем, преобразовав в url-кодированную строку
  14. data:  $.param({some_key: links})
Для последнего варианта, на сервере потребуется обратное преобразование с помощью функции parse_str()

surrealistic pillow пишет:
Адрес подгружаемой страницы
Путь к обработчику

UPD Пардон, поспешил и ошибся с первым вариантом (без ключа). Для него формируем объект со ссылками, а не массив:
CODE (javascript):
скопировать код в буфер обмена
  1. var links = $('a.link').get().reduce(function(o, v, i) {
  2.   o[i] = $(v).attr('href');
  3.   return o;
  4. }, {});
Deonis Отправлено: 30 Августа, 2015 - 12:17:59 • Тема: preg_replace • Форум: Вопросы новичков

Ответов: 3
Просмотров: 191
PHP:
скопировать код в буфер обмена
  1. $in = 'abc {*def*} ghi {*jkl*} mno';
  2. $out = preg_replace("/\{\*[^{*]+\*\}/", "замена", $in);
  3. echo $out; // abc замена ghi замена mno
Deonis Отправлено: 30 Августа, 2015 - 11:01:49 • Тема: Скроллинг div • Форум: JavaScript & VBScript

Ответов: 3
Просмотров: 509
CODE (javascript):
скопировать код в буфер обмена
  1. var container = document.getElementById('container');
  2. container.scrollTop = container.scrollHeight;
Deonis Отправлено: 14 Августа, 2015 - 12:28:21 • Тема: Как вытащить все записи с поля таблицы после символа “/”, начинающиеся с англ. буквы средствами php? • Форум: Вопросы новичков

Ответов: 10
Просмотров: 334
Roman25 пишет:
Что вы мне пишете?
А вы с трёх попыток догадайтесь. Мне же приходиться догадываться в чем смысл вашего вопроса. Его можно интерпретировать по разному.
В любом случае, я вам показал, как получить подстроку после слеша. Нужно еще проверить первую букву? Тогда добавьте REGEXP.
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT
  2.     *
  3. FROM
  4.     `data`
  5. WHERE
  6.     LTRIM(SUBSTRING(`title`, INSTR(`title`,'/ ') + 1)) REGEXP "^[A-Z]"

(Добавление)
В принципе можно и так сделать:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT
  2.     *
  3. FROM
  4.     `data`
  5. WHERE
  6.     `title` REGEXP "/ [A-Z]"
Скорость обработки увеличиться, а вот точность результата - нет
Deonis Отправлено: 14 Августа, 2015 - 11:40:55 • Тема: Как вытащить все записи с поля таблицы после символа “/”, начинающиеся с англ. буквы средствами php? • Форум: Вопросы новичков

Ответов: 10
Просмотров: 334
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT
  2.     SUBSTRING('Текст на русском / Some english text',
  3.     INSTR('Текст на русском / Some english text','/ ') + 1) AS `title` FROM DUAL;
  4. /* Some english text */
Deonis Отправлено: 14 Августа, 2015 - 11:27:11 • Тема: область видимости jquery post • Форум: Вопросы новичков

Ответов: 5
Просмотров: 254
PHP не делает различий между ассоциативными и индексированными массивами, поэтому это всё "массивы" и синтаксис работы с ними ничем не отличается. А в JS и ассоциативные, и индексированные массивы - это "объекты", но отличия есть:
CODE (javascript):
скопировать код в буфер обмена
  1. var arr = [];
  2. console.log( typeof arr ); // object
  3. var obj = {};
  4. console.log( typeof obj ); // object
  5. // НО!
  6. console.log( Array.isArray( arr ) ); // true
  7. console.log( Array.isArray( obj ) ); // false

Если при работе с индексированными массивами, обращаться к элементам массива нужно через квадратные скобки, указывая в них индекс (arr[0]), то при работе с объектами (ассоциативными массивами), в большинстве случаев, обращаются к элементам массива через точку, указывая имя ключа:
CODE (javascript):
скопировать код в буфер обмена
  1. var obj = {
  2.     a: 100,
  3.     b: 200
  4. };
  5. console.log( obj.b ); // 200

Исключениями являются случаи, как у вас, когда ключи числовые и случаи, когда имя ключа берется из переменной. Тогда мы обращаемся к элементу так же, как и в случае с индексированными массивами, т.е. через квадратные скобки:
CODE (javascript):
скопировать код в буфер обмена
  1. var obj = {
  2.     22 : 'vasya',
  3.     440: 'petya'
  4. };
  5. console.log( obj[22] ); // vasya

Обрабатывать объект, как у вас, можно таким образом:
CODE (javascript):
скопировать код в буфер обмена
  1. var obj = {
  2.     22 : 'vasya',
  3.     440: 'petya'
  4. };
  5. for(var i in obj) {
  6.     console.log( obj[i] ); // "vasya" при первой итерации и "petya" - при второй
  7. }
Deonis Отправлено: 13 Августа, 2015 - 22:33:56 • Тема: область видимости jquery post • Форум: Вопросы новичков

Ответов: 5
Просмотров: 254
Кроме callback-функций, в JS есть такое понятие, как "Общания" (Promise), а в jQuery объект $.Deferred и его методы. Как их можно использовать, можете глянуть тут
Deonis Отправлено: 09 Августа, 2015 - 02:51:02 • Тема: Ajax (обработка данных) • Форум: Вопросы новичков

Ответов: 4
Просмотров: 246
soltx пишет:
нужно ли вообще загружать файл на сервер?
Если не учитываете старые браузеры, то совсем не обязательно, всё можно сделать на стороне клиента. Сделал вам рабочий пример в песочнице. Можете протестировать прямо там со своим файлом.
CODE (html):
скопировать код в буфер обмена
  1. <input type="file" id="myfile">

CODE (javascript):
скопировать код в буфер обмена
  1. var d = document;
  2. d.getElementById('myfile').addEventListener('change', function(){
  3.     var file = this.files[0],
  4.         reader = new FileReader();
  5.     reader.onloadend = function (evt) {
  6.         var txt = reader.result;
  7.         if(txt === '') return false;
  8.         var lines = txt.split(/\r?\n/),
  9.             tbl = d.createElement('table');
  10.         for(var i = 0; i < lines.length; i++) {
  11.             var row = tbl.insertRow(0),
  12.                 cell = row.insertCell(0);
  13.             cell.textContent = lines[i];
  14.         }
  15.         d.body.appendChild(tbl);
  16.     };
  17.     reader.readAsText(file);
  18. });
Deonis Отправлено: 26 Июля, 2015 - 18:49:43 • Тема: Директории( файлы) в ассоциативный массив. Подскажите -Please. • Форум: Работа с файловой системой и файлами

Ответов: 3
Просмотров: 1261
Vendor пишет:
Есть ли альтернативное решение обхода структуры файлов
Я использую итераторы:
PHP:
скопировать код в буфер обмена
  1. function makeTree( DirectoryIterator $dir ){
  2.         $data = array();
  3.         foreach ( $dir as $node ){
  4.                 if ( $node->isDir() && !$node->isDot() ){
  5.                         $data[$node->getFilename()] = makeTree( new DirectoryIterator( $node->getPathname() ) );
  6.     } else if ( $node->isFile() ) {
  7.                         $data[] = $node->getFilename();
  8.                 }
  9.         }
  10.   return $data;
  11. }
  12.  
  13. $fileData = makeTree( new DirectoryIterator( '.' ) );
  14.  
  15. print_r($fileData);
Deonis Отправлено: 26 Июля, 2015 - 07:33:38 • Тема: rtrim или параметр лимит функции explode • Форум: Вопросы новичков

Ответов: 9
Просмотров: 298
Для таких задач предпочитают не explode, а preg_split
PHP:
скопировать код в буфер обмена
  1. $parts = preg_split('/\//', $str, -1, PREG_SPLIT_NO_EMPTY);

Страниц (20): « 1 [2] 3 4 5 6 7 8 9 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB