您可以在不使用 ajax 工具包的情况下在 ASP.net webform 上执行 ajax 吗?(请发布示例链接)
7 回答
当然。在 ajax 一词出现之前,人们已经使用 ajax 多年了。Jquery 是一个流行的库,您可以使用它来调用服务器而无需刷新页面。
当然可以!我在 .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);
}
}
}
[重要说明:以上内容未经测试,设计得并不好,甚至可能无法编译,但它应该给你正确的想法。]
这是一个流行的工具:AjaxPro。
正如其他人所指出的,您可以使用 XmlHttpRequest 对象和 javascript 自己编写整个事情。但是,如果您的应用程序将使用非常复杂的技术,那么自己编写代码将变得非常乏味。这些工具变得更加强大和易于使用。
顺便说一句,ASP.Net Ajax 有两个元素。一种是包含在 Visual Studio 2008 中的 Ajax 扩展,可以添加到 Visual Studio 2005。它可以用于比“工具包”更多的功能。诸如部分页面刷新和检索数据而不执行完整回发之类的事情。另一个是 Ajax Control Toolkit,需要单独下载。“工具包”主要包括花哨的控件,尤其是具有 DHTML 效果(显示、隐藏、模拟动画)的控件。
哦,绝对的。
您可以在 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 替换之前,这是一个半路:
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)
}
是的!
那里有 ASP.NET AJAX 的“无数”替代品。他们中的大多数实际上也更好。你可能想看看我的项目;Ra-Ajax满足您的需求 :)