Javascript 理解AJAX
作为一名主要的服务器端程序员(ASP.NET WebForms),我试图在Microsoft AJAX控件中使用UpdatePanels的“一网打尽”方法之外,让自己的头脑专注于AJAX。我的问题有两部分:Javascript 理解AJAX,javascript,ajax,client-side,web-services,Javascript,Ajax,Client Side,Web Services,作为一名主要的服务器端程序员(ASP.NET WebForms),我试图在Microsoft AJAX控件中使用UpdatePanels的“一网打尽”方法之外,让自己的头脑专注于AJAX。我的问题有两部分: JavaScript是支持服务器端通信的客户端脚本的唯一选项吗?如果没有,还有什么替代方案 AJAX应用程序的“通用”体系结构是什么?它仅仅是JavaScript(客户端脚本)与服务器端资源(通过web服务公开的数据/远程功能)交互吗? 我知道这些问题看起来很简单,但考虑到JavaScrip
AJAX通常是客户端和服务器端之间的数据交换,如果您愿意,它是数据的运行者,当然,反之亦然 AJAX的发展与开源、“社交”Web的兴起以及业余和专业开发人员迅速扩大的网络齐头并进。这反过来又引发了许多JavaScript框架(、等)的开发,这些框架基本上消除了,或者至少很好地掩盖了你提到的那些“细微差别” 不过,AJAX不仅仅是一个客户端脚本与服务器端脚本交互。用于表示的XHTML和CSS,用于动态显示数据和与数据交互的文档对象模型,用于数据交换、操作和显示的XML和XSLT(以及最近的XML和XSLT),用于异步通信的XMLHttpRequest对象,最后是将这些技术结合在一起的JavaScript() AJAX/JavaScript并不是唯一的客户端解决方案,其他已建立的解决方案(例如Java和Flash)仍然占有一席之地。但最好的情况是,JavaScript得到了所有现代浏览器的广泛支持,事实上,这些浏览器的JavaScript引擎正在迅速加速,为前端和后端之间的无缝交互提供了更多的可能性
“希望我没有说太多华夫饼干,”你问;) JavaScript替代VbScript(如果我必须说出其中一个,请注意它是MS技术,并且只适用于IE),但实际上,JavaScript是客户端脚本的普遍接受的解决方案 有关Ajax,请参阅下面的讨论:
- 没有,但它确实是唯一一种跨多种浏览器支持的语言。如果你只关心IE,你可以使用VBScript,但使用JS并获得更广泛的支持并不需要额外的努力,因为几乎每个人都使用JS
- AJAX并不像看上去那么复杂。简而言之,它是在浏览器中运行的客户端代码,用于根据使用XMLHttpRequest对象从web服务器查询的数据修改当前页面的布局或内容 最复杂的部分是处理不同浏览器的不同语法/行为,这就是为什么大多数人使用一个框架来抽象大部分内容 下面是一个使用AJAX的简单“Hello World”脚本:
- 这是简短而甜蜜的版本
<script type="text/javascript">
var http = createRequestObject();
function createRequestObject() {
var objAjax;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
objAjax = new ActiveXObject("Microsoft.XMLHTTP");
}else{
objAjax = new XMLHttpRequest();
}
return objAjax;
}
function getNewContent(){
http.open('get','newcontent.txt');
http.onreadystatechange = updateNewContent;
http.send(null);
return false;
}
function updateNewContent(){
if(http.readyState == 4){
document.getElementById('mySentence').innerHTML = http.responseText;
}
}
</script>
var http=createRequestObject();
函数createRequestObject(){
var objAjax;
var browser=navigator.appName;
如果(浏览器==“Microsoft Internet Explorer”){
objAjax=newActiveXObject(“Microsoft.XMLHTTP”);
}否则{
objAjax=newXMLHttpRequest();
}
返回objax;
}
函数getNewContent(){
open('get','newcontent.txt');
http.onreadystatechange=updateNewContent;
http.send(空);
返回false;
}
函数updateNewContent(){
如果(http.readyState==4){
document.getElementById('myEntence')。innerHTML=http.responseText;
}
}
资料来源:
最后一个复杂问题是将从服务器返回的内容解析为代码可以处理的适当形式。最常见的视光学元件有:
- JSON:使用JavaScript的EVAL函数轻松解析为对象。 很好地拉回来的信息 关于具有多个实体的单个实体 属性
- XML:使用JS中内置的DOM方法可以轻松解析,但是 比JSON更复杂。如果你需要 更多的控件或希望执行XSLT 转换,这是一个不错的选择。理论上,它可以被认为更安全一些,因为它不需要将任意字符串传递到EVAL,而EVAL可能会在客户端上执行恶意代码,但这是有争议的
- 非结构化文本:如果只想返回一个值,则返回另一个值 有两种方法可能有点过分
在我看来,AJAX让大多数ASP.NET web表单开发人员感到困惑的是异步方面。目前所有的答案都是好的,但他们忽略了一点。AJAX本身不是一种脚本、语言或技术,您不能“用”AJAX写东西。AJAX只是一个捆绑术语 这是来自: 与DHTML和LAMP一样,AJAX本身不是一种技术,而是一组技术。AJAX结合使用了以下功能:
- 用于标记和样式化信息的HTML和CSS
- 使用JavaScript访问的DOM是动态的