2

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

4

7 回答 7

4

是的...请参阅我在这篇文章中的示例

AJAX - 如何将值传递回服务器

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

于 2008-10-24T20:24:57.960 回答
1

当然。在 ajax 一词出现之前,人们已经使用 ajax 多年了。Jquery 是一个流行的库,您可以使用它来调用服务器而无需刷新页面。

于 2008-10-24T20:28:33.867 回答
0

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

[重要说明:以上内容未经测试,设计得并不好,甚至可能无法编译,但它应该给你正确的想法。]

于 2008-10-24T20:26:35.820 回答
0

这是一个流行的工具:AjaxPro

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

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

于 2008-10-24T20:40:41.220 回答
0

哦,绝对的。

您可以在 ASP.NET 表单中使用诸如jQuery之类的库,而不是 UpdatePanel 以及围绕它的所有用具。

在我以前工作的地方,早在 AJAX 出现之前,我们就在做 AJAX。那是在我们的东西只在 IE 中工作的日子里:-)

在使用 ASP.NET 服务器控件的 ASP.NET 表单中,您需要做的一件事是使用服务器在从 javascript 引用控件时为您的控件生成的正确客户端 ID。因此,如果您有一个 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

于 2008-10-24T20:41:56.990 回答
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)
}   
于 2008-10-24T21:24:28.167 回答
0

是的!

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

于 2008-11-20T09:22:20.200 回答