Javascript 通过jQuery ajax调用JS函数时遇到问题

Javascript 通过jQuery ajax调用JS函数时遇到问题,javascript,jquery,Javascript,Jquery,我正在用javascript编写一些遗留代码,但我有一个无法解决的问题 首次加载文档时,将调用名为addDecisionStateDetailsFields()的JS函数。此方法生成HTML,并将其附加到某个div。Ctrl C,Ctrl V版本位于 因此,当文档第一次加载时,我会得到所需的HTML。但在另一种情况下,我必须通过AJAX调用相同的函数,我做了如下操作: function editSPDecision(decision){ $('#serviceProcedureAddDe

我正在用javascript编写一些遗留代码,但我有一个无法解决的问题

首次加载文档时,将调用名为
addDecisionStateDetailsFields()
的JS函数。此方法生成HTML,并将其附加到某个
div
Ctrl C,Ctrl V
版本位于

因此,当文档第一次加载时,我会得到所需的HTML。但在另一种情况下,我必须通过AJAX调用相同的函数,我做了如下操作:

function editSPDecision(decision){
    $('#serviceProcedureAddDecision').css('display', 'none');
    jQuery.ajax({
        type:'POST',
        data: { 'decisionId': decision.id, 'authorizationId': ${authorizationId} },
        url:'../editDecision/${id}',
        success: function(data,textStatus) {
            jQuery('#serviceProcedureEditDecision').html(data);
        },
        complete: function(XMLHttpRequest,textStatus) {
            attachDatePickerClasses();
            addDecisionStateDetailsFields("spDecision_approve", "approveDiv", "Approve", "${ReviewerApproveReason.getValueCommaSeperated()}", "${ReviewerApproveReason.getNameCommaSeperated()}");
        }
    });
}
在这里,我使用正确的参数调用了方法
addDecisionStateDetailsFields()
。但是在AJAX调用完成后,我无法将生成的HTML附加到页面的HTML中


为了进行交叉检查,我在方法内部放置了一个
警报
,在AJAX调用完成后,实际上调用了该方法,只是生成的HTML没有附加到
div
。这里有什么东西是我遗漏的吗

就在前面的AddDecisionStateDetails字段中

$('#' + masterParentDiv).append(generatedStr);
你能做什么

alert($('#' + masterParentDiv).length);
这将告诉您是否找到masterParentDiv,如果找到它,您应该返回0以外的内容

我将要说的不是100%确定,但是,改变

$('#' + masterParentDiv).append(generatedStr);


success
回调真的被调用了吗?@iUngi我提醒了
generatedStr
并使用Firebug将生成的HTML插入到div中它应该在的位置,瞧,它完美地匹配了。但是,在一个普通的ajax调用之后,不能让同样的事情发生。我怀疑这里的.append()有什么问题,但我不确定。您在哪里看到对
this
关键字的任何引用可能需要这样做?另外,您可能指的是
scope.attach…
scope.addDecision…
@josevega,但正如我前面提到的,这些函数实际上会被调用。在ajax调用之后,我甚至可以得到一个警报。OP正在从完整回调中调用AttachDatePickerClass和AddDecisionStateDetails字段。他需要为这些函数的调用添加作用域。@r在Ajax之后启动警报不会告诉您是否调用了函数addDecisionStateDetailsFields,addDecisionStateDetailsFields中的警报会告诉您……我注意到您有另一个显示:无,这有关系吗,你需要在以后更改它吗?@Jose Vega对语言很抱歉…我是指其他内容并编写了其他内容…(c不是母语人士)…我实际上在方法中添加了一个警报,如
alert(generatedStr)
以及生成和警报的内容,我使用Firebug复制并粘贴到div中生成的HTML应该在哪里…它可以工作。我就是不能用正常的方式来做。但我真的很感谢你为帮助一个noob所做的努力……你能详细说明一下你在电话中增加的范围是什么意思吗。顺便说一句,我需要
显示:none
,以后可能需要动态更改。
jQuery('#' + masterParentDiv).append(generatedStr);