首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IIFE内部的香草Javascript Ajax调用没有响应

IIFE内部的香草Javascript Ajax调用没有响应
EN

Stack Overflow用户
提问于 2014-02-23 16:11:39
回答 1查看 292关注 0票数 1

嘿,伙计们,我在处理生活和阿贾克斯的电话,它似乎完全没有反应.

代码语言:javascript
复制
    var $ = {
     core:function(u){
       return new $.httpRequest(u);
     },
     httpRequest:function(url){
       var text;
       var r = new XMLHttpRequest(); 
           r.open("GET", url, true);
           r.onreadystatechange = function () {
             if (this.readyState != 4 || this.status != 200) return; 
              text = this.responseText;
            };
           r.send();
          console.log(text);
          return text;
   }
 };

我错过了什么愚蠢的东西吗?我刚谈过几次,我非常希望我们的智慧,以便各位议员能提供帮助。我应该把返回放在onload中吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-23 16:20:59

您分配的onreadystatechange函数是您需要处理responseText的地方。您需要在那里处理它,或者调用某个函数并将数据传递给它。记住,ajax调用是异步的,这意味着您使用您的r.send()启动它,您的$.httpRequest()函数完成了,执行之后您的另一个javascript,然后过了一段时间,ajax调用完成并调用了您的onreadystatechange函数。此时,您所能做的就是处理该函数中的数据,或者调用其他函数并将数据传递给它。

下面有一种使用传入httpRequest函数的回调函数的方法:

代码语言:javascript
复制
   var $ = {
     core:function(u){
       return new $.httpRequest(u);
     },
     httpRequest:function(url, callback){
       var r = new XMLHttpRequest(); 
           r.open("GET", url, true);
           r.onreadystatechange = function () {
             if (r.readyState != 4 || r.status != 200) return; 
             callback(r.responseText);
           };
           r.send();
   }

};

示例用法:

代码语言:javascript
复制
$.httpRequest("http://examplesite.com/myurl", function(data) {
    // write code here to process the data
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21970764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档