使用AJAX请求中的代码更新Javascript对象

时间:2013-08-07 09:12:11

标签: javascript jquery ajax object get

我有一个函数来创建一个新对象'dialogBox',然后执行一个AJAX请求并从中添加/删除按钮。该函数使用以下代码作为主HTML页面的一部分正常工作:

var dialog1 = new dialogBox(500, 250, "Add Note","dialog_add_note.php?job_id=" + jobdetails[1]);
dialog1.addButton("Save","Right");

我有很多(20多个)对话框,因此需要在初始化框后更新按钮的内容。

我执行AJAX请求,更新对话框中的HTML。以下脚本作为此请求的一部分返回:

dialog1.addButton("Save","Right");

我收到一条错误,指出dialog1现在未定义。

有没有办法可以继续使用AJAX请求传递的javascript代码更新对象?我没有使用过物体就这么做了,但它变得难以管理。

提前致谢


初始化对象时执行AJAX请求。见下面的功能:

function dialogBox(w, h, title, link) {

this.w=w;
this.h=h;
this.title=title;
this.link=link;

//Strip spaces from title to form ID
var id = 'dialog_' + title.replace(" ","_");

//Add dialog box div
$( "body" ).append( "<div id='" + id + "' title='" + title + "'></div>");

//Create dialog box
$( '#' + id ).dialog({
    autoOpen: true,
    height: h,
    width: w,
    modal: true,
    resizable: false,
    buttons: {
        Cancel: function() {
            $('#' + id).remove();
        }
    },
    close: function() {
        $('#' + id).remove();
    }
});

//Set buttonSet and remove all buttons
this.buttonSet = $('#' + id).parent().find('.ui-dialog-buttonset');
this.buttonSet.empty();

//Loading icon
$('#' + id).html("<div style='text-align:center;'><br><img src='../images/ajaxloader.gif' alt='Loading...'></div>");

//Set initial content of dialog box
$.get('ajax/' + link, function(data) {
        $('#' + id).html(data);
});

//Function to update content of dialog box
this.update=update;
function update(link) {
    $.get('ajax/' + link, function(data) {
            $('#' + id).html(data);
    });
}

//Clear button
this.clearButton = clearButton
function clearButton(name) {
    var tempName = name.replace(" ","_");
    $('#' + id + '_button_' + tempName).remove();
}

//Clear buttons
this.clearButtons = clearButtons
function clearButtons() {
    this.buttonSet.empty(); 
}

//Add Button
this.addButton = addButton
function addButton(name, position) {
    var tempName = name.replace(" ","_");
    newButton = $("<button id='" + tempName + "' style='float:" + position + ";'>" + name + "</button>");
    newButton.button();
    this.buttonSet.append(newButton);
}

//Close Dialog
this.close=close
function close() {
    $('#' + id).remove();
}

}

0 个答案:

没有答案