你可以在不使用ajax工具包的情况下在ASP.net webform上执行ajax吗? (请发布示例链接)
答案 0 :(得分:4)
答案 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替换:
答案 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满足您的需求:)