Привет всем!

Хочу рассказать о том как передать и обработать информацию на сервере не перегружая страницу. В ASP.NET уже существуют такие инструменты в виде UpdatePanel и т.д, которые дают большие возможности, причем не имея абсолютно никаких знаний. Достаточно поиграться с этими инструментами полчаса и вуаля, готово! Но как показал мне горький опыт вместо того чтобы ускорить работу, все стало еще больше тормозить (использовался дешевый windows хостинг).

Итак начнем.

идем сюда и качаем библиотеку jquery (можно использовать и другие фреймворки, по вкусу)

создаем новый сайт и самую простую форму
<input id="some_text" type="text" /><input id="some_button" type="button" value="OK" />
<div id="some_div"></div>



не забываем подключить библиотеку jquery
<script src="jquery-1.3.2.js" type="text/javascript"></script>


теперь сам клиентский код который сначала отправит данные на сервер а потом их получит
<script language="javascript">
  
   $(document).ready(function() {
    $('#some_button').click(function() {
    send();
    
   });
});

function send()
{
$.get("some_handler.ashx", { text: $("#some_text").val()},
 function(data){
  $("#some_div").html(data);
 });
}
  </script>




с помощью метода GET мы отправляем данные с текстового поля в some_handler.ashx.
  1. using System;
  2. using System.Web;
  3.  
  4. public class some_handler : IHttpHandler {
  5.   
  6.   public void ProcessRequest (HttpContext context) {
  7.    
  8.     string somecomment = context.Request["text"];
  9.     context.Response.Write(some_class.some_method(somecomment));
  10.   }
  11.   public bool IsReusable {
  12.     get {
  13.       return false;
  14.     }
  15.   }
  16.  
  17. }



Дальше нужно создать класс some_class со статическим методом some_method который будет обрабатывать полученные данные
  1. public class some_class
  2. {
  3.   public static string some_method(string some_string)
  4.   {
  5.     some_string = "Привет <b>" + some_string + "</b> с сервера!!!";
  6.     
  7.     return some_string;
  8.   }
  9. }



Смотрим что получилось:
image