你可以在不使用ASP.net ajax工具包的情况下做ajax吗?

时间:2008-10-24 20:22:05

标签: asp.net ajax asp.net-ajax

你可以在不使用ajax工具包的情况下在ASP.net webform上执行ajax吗? (请发布示例链接)

7 个答案:

答案 0 :(得分:4)

是的...在这篇文章中看到我的例子

AJAX - How to Pass value back to server

这可以比ASP.NET ajax执行得更好,但代码需要更长的时间。

答案 1 :(得分:1)

不确定。在ajax这个词被创造之前,人们已经做了多年的ajax。 Jquery是一个流行的库,您可以使用它在没有页面刷新的情况下回调服务器。

答案 2 :(得分:0)

当然可以!我在.NET 1.1(在ASP.Net Ajax发布之前)所做的是定义一个HttpHandler来监听对ajax.aspx的调用,运行适当的方法,然后吐出结果。我使用Prototype library来进行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);
    }
  }
}

[大注意:以上是未经测试的,并没有真正设计好,甚至可能无法编译,但它应该给你正确的想法。]

答案 3 :(得分:0)

这是一个受欢迎的工具:AjaxPro

正如其他人所说,你可以使用XmlHttpRequest对象和javascript自己编写整个代码。但是如果你的应用程序将使用非常复杂的技术,那么自己编写代码变得相当繁琐。这些工具变得更加强大和易于使用。

顺便提一下,ASP.Net Ajax有两个元素。一个是Visual Studio 2008中包含的Ajax Extensions,可以添加到Visual Studio 2005.这可以用于比“工具包”更多的功能。部分页面刷新和检索数据而不执行完整回发。另一个是Ajax Control Toolkit,它是一个单独的下载。 “工具包”主要包括花哨的控件,尤其是具有DHTML效果的控件(显示,隐藏,模仿动画)。

答案 4 :(得分:0)

哦,绝对。

您可以在ASP.NET表单中使用jQuery等库,而不是UpdatePanel,以及围绕它的所有随身物品。

在我曾经工作过的地方,我们很早就开始使用AJAX了。这是我们的东西以前只在IE中工作的日子: - )

在使用ASP.NET服务器控件的ASP.NET表单中,您需要做的一件事是使用服务器在从javascript引用控件时为控件生成的正确客户端ID。因此,如果您的标签ID为'telephoneNumber',则需要将其引用为&lt;%= telephone.ClientID%&gt;。例如

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

使用jQuery之类的库,您仍然可以调用ASP.NET Web服务,但您可能更好地调查WCF和JSON序列化。

你不必丢弃ASP.NET ajax中的所有内容,我仍然使用脚本服务调用Web服务。这是一个中途的房子,直到我可以用JSON替换:

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

答案 5 :(得分:0)

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)
}   

答案 6 :(得分:0)

YES!

ASP.NET AJAX有一个“gazillion”替代品。 其中大多数实际上也更好。你可能想看看我的项目; Ra-Ajax满足您的需求:)