javascript - AJAX 将 HTML 放入用相同代码创建的 div 中

标签 javascript php jquery html ajax

我的代码有问题,并且已经搜索了几个小时可能的解决方案,但没有运气。我自己尝试了很多事情,也没有运气。所以这是我的问题:

我有一个 JS 函数,它创建一个新的“窗口”,包括所有 DIV,因此所有内容都是动态创建的。我的函数中有一个 AJAX 请求,它从 PHP 文件获取数据,并且应该将该数据放入同一函数创建的相应 DIV 中。但我收到错误:

Uncaught TypeError: Cannot set property 'innerHTML' of undefined

我的代码:

var proWindow = function(HEIGHT,WIDTH,TITLE,TYPE,ID){
this.max = false;
this.name = TITLE;
this.mMain = document.createElement("div");
this.mMain.className = "main";
this.appID = ID;
this.id = this.name + ID;
$.ajax({
    url: 'includes/getAppContents.php',
    type: 'GET',
    data: {thisAppID: this.appID},
})
.done(function(result) {
    var result = $.parseJSON(result);
    var code = (result['code']);
     this.mMain.innerHTML = code;
})
.fail(function() {
    //console.log("FAILED RETRIEVING CODE FOR APPLICATION");
})
.always(function() {
    //console.log("INITIALIZING APPLICATION");
});

代码的“this”部分完全丢失在 AJAX 括号中,这导致了问题,AJAX 不知道我的意思:“this.mMain”,但我应该如何解决这个问题?

谢谢, -特里斯坦

最佳答案

问题是你失去了上下文。输入 done 回调后,this 不再指向您定义元素的外部 this

您可以通过告诉 jQuery 在外部上下文中调用回调来纠正此问题,通过 bind() (或 jQuery 的 .proxy()):

.done(function(result) {
    var result = $.parseJSON(result);
    var code = (result['code']);
     this.mMain.innerHTML = code;
}.bind(this))

关于javascript - AJAX 将 HTML 放入用相同代码创建的 div 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39457449/

相关文章:

javascript - Node ES6 : class is not a function

php - 如何让用户级别编辑任何人制作的自定义帖子类型?

php - 如何将这部分代码更改为 PHP 准备语句?

分组切换后 jQuery 淡入

javascript - jQuery Datepicker 值并存储到 php 变量中

javascript - 将 jQueries 插件数据保存到字符串将不起作用

php - 如何在 Laravel 查询生成器中注入(inject)自定义列

javascript - css 上的子菜单悬停菜单问题

javascript - 轮播 - 将文本与 slider 中的图像相关联

javascript - 当用户在浏览器中禁用 javascript 时如何检测事件?