Можете ли вы сделать ajax без использования ASP.net ajax toolkit? - PullRequest
2 голосов
/ 25 октября 2008

Можете ли вы сделать ajax на веб-форме ASP.net без использования инструментария ajax? (Пожалуйста, оставьте пример ссылки)

Ответы [ 7 ]

4 голосов
/ 25 октября 2008

да ... см. Мой пример в этом посте

AJAX - Как передать значение обратно на сервер

Это может работать намного лучше, чем ASP.NET ajax, но требует больше времени для написания кода.

1 голос
/ 25 октября 2008

Конечно. Люди занимались ajax в течение многих лет, прежде чем термин ajax был даже придуман. Jquery - это популярная библиотека, которую вы можете использовать для обратных вызовов на сервер без обновления страницы.

0 голосов
/ 20 ноября 2008

ДА!

Существуют альтернативы ASP.NET AJAX для "gazillion". Большинство из них на самом деле тоже лучше. Вы можете проверить мой проект; Ра-Аякс для ваших нужд:)

0 голосов
/ 25 октября 2008

Ajax означает, что когда пользователь просматривает вашу веб-страницу с помощью javascript, вернитесь на сервер и получите что-то еще. Затем обновите страницу тем, что вы выбрали, используя JavaScript, DOM.

Объект XMLHttpRequest хорош, но даже до этого вы могли бы сделать то же самое, используя скрытый IFRAME ....

Вот весь код javascript, который вам необходим для начала работы:

function GetXmlHttpObject()
{
    var objXMLHttp=null
    if (window.XMLHttpRequest)
    {
        objXMLHttp=new XMLHttpRequest()
    }
    else if (window.ActiveXObject)
    {
        objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
    }
    return objXMLHttp
}


function stateChanged()
{
    if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
    {
        // do something with xmlHttp.responseText
    }
}


function SendAsyncHttpRequest()
{
    xmlHttp=GetXmlHttpObject()

    if (xmlHttp==null)
    {
        return
    }

    var url = "http://YOUR_URL"
    xmlHttp.onreadystatechange=stateChanged
    xmlHttp.open("GET",url,true)
    xmlHttp.send(null)
}   
0 голосов
/ 25 октября 2008

О, абсолютно.

Существуют библиотеки, такие как jQuery , которые вы можете использовать в формах ASP.NET вместо UpdatePanel и всех принадлежащих ему атрибутов.

Там, где я раньше работал, мы делали AJAX задолго до того, как появилось слово для этого. Это было в те дни, когда наши вещи работали только в IE: -)

Одна вещь, которую вам нужно сделать в формах ASP.NET, где вы используете серверные элементы управления ASP.NET, - это использовать правильный идентификатор клиента, который сервер генерирует для ваших элементов управления при обращении к ним из javascript. Поэтому, если у вас есть ярлык с идентификатором скажем «phoneNumber», вам нужно ссылаться на него как <% = telephone.ClientID%>. например

$("#<%=telephoneNumber.ClientID %>").attr("disabled", "disabled");

С такими библиотеками, как jQuery, вы все равно можете вызывать свои веб-сервисы ASP.NET, но вам, вероятно, лучше исследовать сериализацию WCF и JSON.

Вам не нужно выбрасывать все в биты ajax ASP.NET, я все еще обращаюсь к веб-сервисам, используя сервисы сценариев. Это половина пути, пока я не смогу заменить JSON:

http://msdn.microsoft.com/en-us/magazine/cc163499.aspx

0 голосов
/ 25 октября 2008

Вот популярный инструмент: AjaxPro .

Как уже отмечали другие, вы можете кодировать все это самостоятельно, используя объекты XmlHttpRequest и javascript. Но если ваше приложение будет использовать очень сложные методы, написание кода самостоятельно становится довольно утомительным. Инструменты стали намного более мощными и простыми в использовании.

В скобках есть два элемента ASP.Net Ajax. Одним из них является Ajax Extensions, которые включены в Visual Studio 2008 и могут быть добавлены в Visual Studio 2005. Это можно использовать для гораздо большей функциональности, чем «инструментарий». Такие вещи, как частичное обновление страницы и получение данных без выполнения полной обратной передачи. Другой - Ajax Control Toolkit, который является отдельной загрузкой. «Инструментарий» в основном включает необычные элементы управления, особенно с эффектами DHTML (показать, скрыть, имитировать анимацию).

0 голосов
/ 25 октября 2008

Конечно, вы можете! В .NET 1.1 (до выпуска ASP.Net Ajax) я определил HttpHandler для прослушивания вызовов ajax.aspx, запустил соответствующие методы и выплюнул результат. Я использовал библиотеку прототипов для вызова Ajax, хотя вы могли использовать любой другой или сделать это вручную.

Я собираюсь по памяти, но вот код, который я использовал (для .NET 2.0, но вы поняли):

// client-side js:
var foo = new Ajax.Request('ajax.aspx',
{
   method:'get',
   parameters: { method: 'GetFive' },
   onSuccess: function(transport){
     var response = transport.responseText || "no response text";
     alert("Success! \n\n" + response);
},
onFailure: function(){ alert('Something went wrong...') }
});

// web.config:
<httpHandlers>
  <!-- pre existing handlers go here -->
  <add verb="GET" path="ajax.aspx" type="Fully.Qualified.Name.AjaxHandler, AssemblyName" validate="false" />
</httpHandlers>

// AjaxHandler.cs
public class AjaxHandler : IHttpHandler {
  internal delegate object AjaxFunction();

  private Dictionary<string, AjaxFunction> functions;

  public bool IsReusable {
    get { return true; }
  }

  public void ProcessRequest(HttpContext context) {
    this.functions = new Dicionary<string, AjaxFunction>();
    this.functions.Add("GetFive", delegate() {
      return 5;
    });

    string functionName = context.Request["method"];
    AjaxFunction func = this.functions[functionName];
    if (func != null) {
      object val = func();
      context.Response.Write(val);
    }
  }
}

[Большое примечание: вышеизложенное не проверено и не очень хорошо спроектировано, и может даже не компилироваться, но оно должно дать вам правильную идею.]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...