gpt4 book ai didi

JavaScript 未定义

转载 作者:行者123 更新时间:2023-11-28 12:50:27 28 4
gpt4 key购买 nike

为什么ajax返回成功后无法访问render函数?也许我要疯了,但我以前这样做过。

它告诉我 this.render 不是一个函数?

DataItem.prototype = {
display: function () {
$('body').append(this.name + ": " + this.getData(this.rootData, this.subData) + "<br />");
},
getData: function (rootData, subData) {
$.ajax({
type: "GET",
url: "json/data.js",
data: "",
dataType: "json",
success: function (json){
this.render(json);
}
});
},
render: function (json) {
var res = [];
for(var i=0, t; t=json.log.entries[i]; i++) {
var p = t.request.url;
if (p!=undefined) res.push(p);
}
return res.length;
}
};

最佳答案

当您尝试调用 this.render() 时,范围已更改。我相信 this 包含 ajax 请求对象而不是 DataItem 对象。

一个简单的解决方案是这样的:

getData: function (rootData, subData) {
var self = this;
$.ajax({
type: "GET",
url: "json/data.js",
data: "",
dataType: "json",
success: function (json){
self.render(json);
}
});
},

编辑:我错了,在 success 函数中 this 变量包含 ajax 请求的选项,但是我的解决方案仍然是正确的。请参阅 jQuery 文档 ( http://docs.jquery.com/Ajax/jQuery.ajax#options )

关于JavaScript 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1696262/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com