Javascript AJAX请求代码在Eclipse中工作,但在浏览器中不工作

Javascript AJAX请求代码在Eclipse中工作,但在浏览器中不工作,javascript,html,ajax,eclipse,Javascript,Html,Ajax,Eclipse,我正在编写一个简单的AJAX代码,作为学习基础知识和介绍概念的一种方式。下面的代码获取位于服务器上的文本文件的内容,并传递给一个变量,弹出到一个警报框中 我的问题是,代码在EclipseIDE“用Web浏览器打开”中运行得很好,而在其他任何地方都没有 var http = createRequestObject(); var responseContent; function createRequestObject() { var objAjax; var browser = na

我正在编写一个简单的AJAX代码,作为学习基础知识和介绍概念的一种方式。下面的代码获取位于服务器上的文本文件的内容,并传递给一个变量,弹出到一个警报框中

我的问题是,代码在EclipseIDE“用Web浏览器打开”中运行得很好,而在其他任何地方都没有

var http = createRequestObject();
var responseContent;

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 getContent(name){
   http.open('get', name);
   http.onreadystatechange = function() {
       if (http.readyState == 4) {
          responseContent = http.responseText;
       }
   };
   http.send(null);
 }   

 $(document).ready(function() {
   getContent('newcontent.txt');
   alert(responseContent);
 });
有人知道为什么会这样吗?代码有问题吗?如果是这样的话,为什么它可以在eclipse中正常工作,但在其他地方却不行呢


谢谢

总结成一个简短的回答:

getContent
函数中发送
XHR
,并附加一个侦听器

然后,
getContent
返回,执行过程会警告未定义的变量
responseContent

在某个时刻,XHR被应答,
readyState
更改为
4
,并调用侦听器


只有到那时,
responseContent
变量才会被赋值。

混合使用jQuery和手动XMLHttpRequest有什么特殊原因吗?可能您的服务器上没有jQuery。@MichaelBerkowski除了知道如何快速编写文档就绪函数外,我没有任何理由使用jQuery来处理文档就绪。我正在链接到谷歌托管的jQuery文件。我的警报框一直返回“未定义”。因为
responseContent
是异步填充的,因此当它收到警报时,很可能还没有填充。您应该在执行回调中或回调后执行与该值相关的任何操作。我建议使用简化的XHR(比如jQuery,您无论如何都在使用它),您能将我链接到任何关于回调的信息吗?我不确定回调在这段代码中会发生在哪里。在您的实现中,有一个事件侦听器在就绪状态更改时被调用。在jQuery中,有一个回调函数传递给AJAX包装器,在成功/失败时调用。您可以在适当的文档中轻松找到它。在您的代码中,侦听器很可能是在警报之后调用的,因此它会警报一个未定义的变量。谢谢,这很有帮助。你能推荐一些学习ajax代码的资源吗?你能推荐一些好的库吗?好吧,jQuery相当不错,我经常使用它。API参考是。过去我还使用过
mootools
YUI
ExtJS
等。他们都完成了任务
ExtJS
适用于非常复杂的应用程序,而且非常繁重,
YUI
具有更模块化的结构(jQuery也是如此)。jQuery的优势在于它的应用范围非常广泛(因此,如果您遇到困难,可以提供帮助),而且非常轻巧,文档也非常完整。它有助于快速原型化您的项目。