我在尝试通过添加参数来改进我的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
)。我想知道为什么它会显示为空白以及我如何解决它?
答案 0 :(得分:1)
您的数据未定义,因为您的回调不接受参数
试试这个:
ajax.get(dir.layout+'login.html',false,
function(data){ // <=== data
elements.addTemplate(data,'parent',true);
});