2008-10-24 66 views

回答

4

是......看在这个岗位

AJAX - How to Pass value back to server

这可以执行比ASP.NET AJAX好得多我的例子,但它需要较长的时间代码。

+0

它可能需要更长的时间才能入门,但不是一旦你有一个好的图书馆为自己。另外,当你控制图书馆时,你可以做什么的限制较少。 – Kibbee 2008-10-24 20:29:08

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

[大注:以上是未经检验的,而不是真正设计好,甚至可能不会编译,但它应该给你正确的想法。]

1

当然。人们在阿贾克斯这个词甚至被创造出来之前已经做了好几年了。 Jquery是一个非常受欢迎的库,您可以使用它来在不刷新页面的情况下将调用回服务器。

0

这是一个流行的工具:AjaxPro

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

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

0

绝对是哦。

存在诸如jQuery之类的库,您可以在ASP.NET窗体中使用这些库,而不是UpdatePanel以及围绕它的所有工具。

我曾经工作过的地方早在有一个词出现之前就已经在做AJAX了。这是在我们的东西只用于在IE中工作的日子:-)

您需要在ASP.NET窗体中使用ASP.NET服务器控件执行的一件事是使用正确的客户端ID服务器在从JavaScript引用它们时为您的控件生成。所以如果你有一个ID为'telephoneNumber'的标签,你需要将它作为<%= telephone.ClientID%>。例如

$("#<%=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

0

阿贾克斯只是意味着当用户在看你的网页,使用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

是的!

有一个“gazillion”替代ASP.NET AJAX那里。 其中大部分其实也是比较好的。你可能想看看我的项目; Ra-Ajax为您的需求:)