#Ajax

jQuery Ajax Table - небольшой плагин для jQuery

Published at August 30, 2011 ·  1 min read

То, о чём писал в твиттере, но не мог написать в блоге раньше. 

Была небольшая и, на первый взгляд, достаточно простая задача - показать на странице таблицу, с возможностью сортировки и автообновления. Ну ещё и поиск по ней. После некоторого времени, потраченного на поиск и попытки исправления существующих решений стало понятно, что написать с нуля будет быстрее и дешевле (тут имеется в виду также дальнейшая поддержка всего этого). Готовые реализации javasctipt-библиотек и плагинов к jQuery были или слишком уж навороченный для данной задачи или, мягко говоря, очень плохо справлялись с обновлением таблицы и последующей сортировкой. Результатом этого всего стало написание плагина для jQuery c нуля.

...


4 способа запустить JavaScript при загрузки страницы

Published at November 22, 2010 ·  2 min read

Рано или поздно при написании JavaScript’а возникает необходимость в том, чтобы он был автоматически запущен при загрузке страницы. Нужно это, как правило, для следующих действий: инициализация интерфейса (UI) и отложенная загрузка данных (lazy load).Как часто бывает, для такой простой на первый взгляд задачи, есть несколько способов решения.

Задача. После загрузки страницы, нам нужно каким-то образом проинициализировать меню функцией initiPageMenu(), которыя находится в файле menu.js.

Способы решения:

...


ASP.NET Ajax. Часть 2: Client-side

Published at September 15, 2010 ·  2 min read

1. Введение2. Обзор framework’а3. Жизненный цикл страницы4. Полезные объекты и функции

1. Введение

В предыдущем посте из этой серии (ASP.NET Ajax. Часть 1: что внутри?) я рассказал что такое AJAX и как Microsoft помогает нам его использовать. Сегодня я более подробно расскажу о его клиентской части. Частично из-за того, что эту информацию не так просто найти в MSDN, как хотелось бы, частично  из-за того, что в последнее время Microsoft уделяет этой части всё меньше внимания, агитируя использовать jQuery, многие разработчики даже на догадываются какой мощных инструмент находится у них в руках.

...


ASP.NET Ajax. Часть 1: что внутри?

Published at April 2, 2009 ·  2 min read

На днях столкнулся такой ситуацией, что многие некоторые разработчики при упоминании Ajax имеют в виду компонент UpdatePanel и не понимают как она работает. Сегодня я решил попытаться исправить эту ситуацию и рассказать что такое и как устроен ASP.NET Ajax.

 Для начала обратимся Википедии и посмотрим, что такое Ajax:

<p>
AJAX (Asynchronous Javascript and XML — «асинхронный JavaScript и XML») — это подход к построению интерактивных пользовательских интерфейсов веб-приложений, заключающийся в «фоновом» обмене данными браузера с веб-сервером. В результате при обновлении данных веб-страница не перезагружается полностью, и веб-приложения становятся более быстрыми и удобными.
</p>

Для выполнения асинхронных запросов, на JavaSctipt необходимо создать объект XMLHttpRequest, который и будет взаимодействовать с сервером. В зависимости от браузера, объект создаётся разными способами, но можно написать универсальный метод для его создания:

...


Ajax и загрузка файлов на сервер

Published at September 14, 2008 ·  2 min read

Время от времени приходится организовывать возможность загрузки пользователями файлов на сервер: загрузка аватарок, файлов для галереи и т.д.  

Для решения этой задачи существует стандартный ASP.NET компонент FileUpload, который, в свою очередь, педставляет html-тэг . В простнйшем случае код для загрузки файлов будет выглядеть так: -  Default.aspx: <%@ Page Language=“C#” AutoEventWireup=“true” CodeBehind=“Default.aspx.cs” Inherits=“WebApplication1._Default” %> -   - -   - <html xmlns=“http://www.w3.org/1999/xhtml"> - <head runat=“server”> -     <title></title> - </head> - <body> -     <form id=“form1” runat=“server”> -     <div> -         input type=“submit” value=“Upload” /> -     </div> -     </form> - </body> - </html> -   -   - Default.aspx.cs using System; - using System.Collections.Generic; - using System.Linq; - using System.Web; - using System.Web.UI; - using System.Web.UI.WebControls; - using System.IO; -   - namespace WebApplication1 - { -     public partial class _Default : System.Web.UI.Page -     { -         protected void Page_Load(object sender, EventArgs e) -         { -             if (IsPostBack && fu.FileContent != null) -             { -                 fu.PostedFile.SaveAs(path); -             } -         } -     } - } -   -   - Default.aspx:  <%@ Page Language=“C#” AutoEventWireup=“true” CodeBehind=“Default.aspx.cs” Inherits=“WebApplication1._Default” %> -   - -   - <html xmlns=“http://www.w3.org/1999/xhtml"> - <head runat=“server”> -     <title></title> - </head> - <body> -     <script type=“text/javascript”> -         function onFormSubmit() { -             var formUpload = document.getElementById(‘form1’); -             formUpload.target = ‘upload_target’; -             formUpload.action = ‘default.aspx’; - -         } -     </script> -     <form id=“form1” onsubmit=“onFormSubmit();"> -     <div> -         <input id=“file1” type=“file” name=“file1” /> <br /> -         <input id=“file2” type=“file” name=“file2” /> -         -         <input type=“submit” value=“Upload” /> -         -         <iframe id=“upload_target1” name=“upload_target” src=”” style=“width:0;height:0;border:0px solid #fff;"></iframe> -     </div> -     </form> - </body> - </html> -   - Default.aspx.cs: using System; - using System.Collections.Generic; - using System.Linq; - using System.Web; - using System.Web.UI; - using System.Web.UI.WebControls; - using System.IO; -   - namespace WebApplication1 - { -     public partial class _Default : System.Web.UI.Page -     { -         protected void Page_Load(object sender, EventArgs e) -         { -             if (IsPostBack) -             { -                 HttpFileCollection uploads = HttpContext.Current.Request.Files; -                 for (int i = 0; i < uploads.Count; i++) -                 { -                     HttpPostedFile upload = uploads[i]; -   -                     if (upload.ContentLength == 0) -                         continue; -   -                     upload.SaveAs(path); -                 } -   -             } -         } -     } - } -   -  

...


.NET 3.5 SP1 и первые проблемы

Published at August 22, 2008 ·  1 min read

Свершилось! Несколько дней назад вышел [8319-81da479ab0d7&displaylang=en" target="_blank">.net 3.5 service pack 1](http://www.microsoft.com/downloads/details.aspx?familyid=ab99342f-5d1a-413d-<script type=). В месте с ним мы получили ASP.NET Dynamic Data, Entity Framework,  ADO.NET Data Services и много чего другого. Подообнее можно почитать тут.

Но, разумеется, в каждой бочке мёда найдётся своя ложка дёгтя. Ей стал Ajax Control Toolkit, а именно одни из его базовых компонентов - ToolkitScriptManager. После установки .net 3.5 sp1 ToolkitScriptManager, входящий в состав Microsoft Ajax Control toolkit, перестал правильно функционировать. Разработчики компонентов достаточно быстро отреагировали  и выпустили новый релиз, который имеет совместимость с носледней версией .net framework. Так что ставим новую версию, и продолжаем использовать пусть и не лучшую, но уже ставшую достаточно популярной связку MS Ajax и Ajax Control Toolkit. Новую версию тулкита качает здесь.

...


MS Ajax и сторонние скрипты

Published at April 5, 2008 ·  2 min read

Интеграция различных скриптов на страницу, где используется MS Ajax - задача нередкая, но единого решения для неё не существует. Я поделюсь с вами некоторыми методами, которые помогут интегрировать срипт в вашу страницу.

<li>

Никогда не подключайте скрипты с помощью тега <font size="2" color="#0000ff"><font size="2" color="#0000ff"><</font></font><font size="2" color="#a31515"><font size="2" color="#a31515">script</font></font><font size="2"> </font><font size="2" color="#ff0000"><font size="2" color="#ff0000">src</font></font><font size="2" color="#0000ff"><font size="2" color="#0000ff">="..."></</font></font><font size="2" color="#a31515"><font size="2" color="#a31515">script</font></font><font size="2" color="#0000ff"><font size="2" color="#0000ff">></font></font>. Вместо этого следует использовать копмонени ScriptManager либо ScriptManagerProxy. 

</li>
<li>

Что бы не говорили разработчики MS Ajax и AjaxControlToolkit, в конец каждого файла со скриптом следует добавить такой код:<br />
<font size="2" color="#0000ff"><font size="2" color="#0000ff">if</font></font><font size="2"> (</font><font size="2" color="#0000ff"><font size="2" color="#0000ff">typeof</font></font><font size="2">(Sys) !== </font><font size="2" color="#a31515"><font size="2" color="#a31515">'undefined'</font></font><font size="2">) Sys.Application.notifyScriptLoaded();<br />
</font>Данный код указывает на то, что скрипт полностью загрущился и можно его выполнять. 

</li>
<li>

Если скрипт необходимо подгружать только в определённых ситуациях (например, добавление нового компонента на форму), то его следует регистрировать с помощью статических методов класса ScriptManager вида RegisterClientScriptXXX(). 

</li>
<li>

Для выполнения скрипта после загрузки на страницу есть несколько методов: <br />
1) использовать клиентское событие EndRequest;<br />
2) создать функцию с именем pageLoad() - метод аналогичен первому;<br />
3) если скрипт необходимо зарегистрировать с помощью серверного кода, то используйте метод <font size="2" color="#2b91af"><font size="2" color="#2b91af">ScriptManager</font></font><font size="2">.RegisterStartupScript().</font> 

</li>

Эти методы не являются панацеей от всех бед, но помогают экономить часть времени, необходимого на интеграцию скриптов. Иногда хватает только этого, иногда приходится часами отлаживать чужой javascript, но знать о них, как я думаю, должен каждый разработчик, использующий MS Ajax.

...


Tags

.net .net framework .net framework 3.5 agile ajax ajax control toolkit ampq ansible apache asp.net asp.net mvc automation axum babel bash benchmark blog blog engine bootstrap buildout c# cache centos chrome ci cinder ckan cli cloud code review codeplex community config debugger deface dependencies development environment devices devstack devtime disks django dlr dns docker dockerimage dos easy_install elmah encoding environment variables error event events everything-as-a-code exception exceptions fabrik firefox flask foreach forms fstab gae gcc gerrit git github go google google app engine grep hack hacked hardware headless horizon hound html hugo iaas ienumerable iis internet iptables iron python ironic iscsi java script javascript jenkins jquery js jsx k8s kharkivpy kiss kombu kubernetes kvm kyiv lettuce libvirt linux lio loci logging loopback losetup lvm mac os macos mercurial microsoft microsoft sync framework mobile mono ms office msbuild networking news nginx npm npx offtopic oop open source open xml opensource openstack openvswitch os p'n'p packages paraller development patterns & practices performance php pika pip plugins podcast popup postgresql profiler project protocols proxy pycamp pycharm pycon pykyiv pylint pypi python python 3 qcow quantum qumy rabbitmq rar react reactjs refactoring rfc rhel search engine security selenium server shell silverlight socket software engineering source control sourcegear vault sources sql sql server sql server express sqlalchemy ssh static site sublimetext svg tests tgt tipfy todo tornado typescript uapycon ui uneta unit tests upgrades usability vim virtualenv visual studio vitrage vm vue.js vuejs web development web server web service web_root webpack webroot windows windows live word press x32 x64 xcode xml xss xvfb интернет-магазин книги

Recent posts

Go 1.18: new features

Всё будет Kubernetes

2022 Relaunch

Everyday Blogging

I don't want this CI


Archives

2022 (3)
2019 (73)
2018 (2)
2017 (3)
2016 (2)
2015 (3)
2014 (5)
2013 (17)
2012 (22)
2011 (36)
2010 (25)
2009 (35)
2008 (32)
2007 (2)