关于AJAX管家代码的几个基本问​​题

时间:2014-01-12 23:06:49

标签: javascript jquery ajax xml

最容易看到此代码中的注释。据我所知,这是所有AJAX代码的内务管理,但我不了解它的某些部分!

var xmlHttp = createXmlHttpRequestObject();

function createXmlHttpRequestObject() {
    var xmlHttp;
//Why are we calling/redefining the xmlHttp variable? 
// Why define it as createXmlHttpRequestObject() in the first place?

    if(window.XMLHttpRequest) {
        xmlHttp = new XMLHttpRequest(); //What exactly is an XMLHttpRequest?
    }else{
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    return xmlHttp;
}

可能是个愚蠢的问题:AJAX需要一个xml对象吗?我知道它的缩写部分,但我并不认为服务器响应必须是XML格式。

如果这不是提出这个问题的正确方法,我很抱歉,但我不知所措,不知道我还能去哪里!

1 个答案:

答案 0 :(得分:1)

//Why are we calling/redefining the xmlHttp variable? 

我们不是。

// Why define it as createXmlHttpRequestObject() in the first place?

我们没有。

这是两个不同的变量。一个是本地的,另一个不是。不幸的是,作者为两者选择了相同的名称,因为这让你很困惑。

最终,他们最终持有相同的资源,因为本地资源从函数返回并成为非本地资源的值。

考虑以下类似的例子:

function foo() {
   var x = 0;
   return x;
}

var y = foo();

就像那样,除了在你的代码中,函数定义在调用之后出现,并且变量恰好具有相同的名称。你的功能用它做了更多有趣的东西。 :)


// What exactly is an XMLHttpRequest?

这是浏览器内部技术的内部名称,它使AJAX成为现实。你应该简单地谷歌谷歌所有有趣的细节。

  

AJAX需要一个xml对象吗?我知道它的缩写部分,但我并不认为服务器响应必须是XML格式。

没有。从历史上看,XmlHttpRequest是为XML设计的,因此名称,但它绝不是一个要求。坦率地说,我现在说这种情况非常罕见;人们喜欢JSON作为交换格式......虽然我敢肯定,在某些组织中,你仍然无法摆脱20世纪90年代。


  

据我所知,这是所有AJAX代码的内务管理

实际上,由于您标记了此问题,因此您不应该对此进行任何。 jQuery将在内部执行所有这些gubbins,允许你坚持使用the handy $.get-family of functions。同样,所有细节都可以在网上找到。