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