了解AJAX

Ach*_*les 8 javascript ajax web-services client-side

主要是一个服务器端程序员(ASP.NET WebForms)我试图让我的思想在AJAX中使用Microsoft AJAX控件中的UpdatePanels的"全能"方法.我的问题有两个部分:

  1. JavaScript是支持服务器端通信的客户端脚本的唯一选择吗?如果不是什么替代品.
  2. 什么是AJAX应用程序的"通用"架构?是简单的JavaScript(客户端脚本)与服务器端资源(通过Web服务公开的数据/远程功能)交互吗?我知道这些似乎是简单的问题,但鉴于JavaScript的"细微差别",AJAX对我来说似乎仍然有点像"黑魔法".谢谢!

Joh*_*nFx 8

这是简短而甜蜜的版本.

  1. 不,但它确实是各种浏览器支持的唯一语言.如果你只关心IE,你可以使用VBScript,但使用JS并没有任何额外的努力,并获得更广泛的支持,所以几乎每个人都使用JS.

  2. 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>
Run Code Online (Sandbox Code Playgroud)

资料来源:http://www.openhosting.co.uk/articles/webdev/5899/

最后的复杂性是将从服务器返回的内容解析为代码可以处理的适当形式.最常见的选择是:

  • JSON:使用JavaScript的EVAL函数轻松解析对象.很高兴能够撤回有关多个属性的单个实体的信息.

  • XML:使用JS内置的DOM方法稍微轻松解析,但比JSON更复杂.如果您需要更多控制或想要进行XSLT转换,这是一个不错的选择.从理论上讲,它可以被认为更安全一些,因为它不需要将任意字符串传递到可以在客户端上执行恶意代码的EVAL,但这是有争议的.

  • 非结构化文本:如果您只想要返回单个值,则另外两种方法可能有点过分.

  • 是的,几乎总结得比我的文章更好,谢谢约翰:) (2认同)