解析涉及ajax的函数的参数

时间:2015-09-04 03:27:59

标签: javascript ajax

我在尝试通过添加参数来改进我的ajax函数的功能时遇到问题,以定义如何处理返回的结果。

所以我想要实现的是一种告诉函数将结果附加到给定元素id的方法。但我很难理解如何添加此功能。

这是我目前的代码:

var ajax = new function(){

    var self = this;

    self.x = function() {
        if (typeof XMLHttpRequest !== 'undefined') {
            return new XMLHttpRequest();  
        }
    };

    self.send = function(url, callback, method, data, sync) {
        var x = self.x();
        x.open(method, url, sync);
        x.onreadystatechange = function() {
            if (x.readyState == 4) {
                callback(x.responseText)
            }
        };
        if (method == 'POST') {
            x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
        }
        x.send(data)
    };

    self.get = function(url, data, callback, sync) {
        var query = [];
        for (var key in data) {
            query.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key]));
        }
        self.send(url + (query.length ? '?' + query.join('&') : ''), callback, 'GET', null, sync)
    };
};
然后我按照这样的方式发出ajax请求:

//get the html file, and then call a function
ajax.get(dir.layout+'login.html',false,
        function(){
            elements.addTemplate(data,'parent',true);
        });

在Chrome中,xhr显示正确的数据和内容,因此我知道该部分有效。在我的elements.loadTemplate函数中,我有这三行及其实际值:

  elements.addtemplate(data,div_id,append){     
      console.log(data); //shows:
      console.log(div_id);   //shows string: parent 
      console.log(append); //shows: true
  }

现在问题是数据是空白的,当我希望它包含我刚刚请求的HTML文件的内容时(在这种情况下为login.html)。我想知道为什么它会显示为空白以及我如何解决它?

1 个答案:

答案 0 :(得分:1)

您的数据未定义,因为您的回调不接受参数

试试这个:

ajax.get(dir.layout+'login.html',false,
        function(data){ // <=== data
            elements.addTemplate(data,'parent',true);
        });