2011-12-08 55 views
3

我正在處理JavaScript中的一些遺留代碼,我遇到了一個問題,我無法解決。通過jQuery調用JS函數的麻煩ajax

當文檔第一次加載時,調用一個名爲addDecisionStateDetailsFields()的JS函數。這種方法會生成附加到某個div的HTML。 Ctrl C, Ctrl V版本位於pastebin.

所以當文檔第一次加載時,我會得到所需的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()}"); 
     } 
    }); 
} 

這裏,我調用與正確的PARAMS方法addDecisionStateDetailsFields()。但在AJAX調用完成後,我無法將生成的HTML附加到頁面的HTML中。

爲了進行交叉檢查,我在該方法內部放置了一個alert,並且在AJAX調用完成後,實際上調用該方法,只是生成的HTML不會附加到div。有什麼我在這裏失蹤的東西?

+0

是'success'回調實際上越來越叫什麼名字? –

+0

是的......我可以證實這一點。 – rstarter

+0

@iUngi我提醒'generatedStr'並使用Firebug我將生成的HTML插入到應該出現的div中,並且完美地適合它。但是,在正常的ajax調用之後無法獲得同樣的結果。我懷疑某事。這裏的.append()是錯誤的,但我不確定。 – rstarter

回答

-1

的addDecisionStateDetailsFields右內前

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

你可以做

alert($('#' + masterParentDiv).length); 

這將告訴你masterParentDiv是否被發現,如果發現你應當得到其他的東西比0

不是100%確定我要說但是,改變

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

jQuery('#' + masterParentDiv).append(generatedStr); 
+0

你在哪裏可以找到可能需要這個的'this'關鍵字的引用?另外,你可能意指'scope.attach ...'和'scope.addDecision ...'。 –

+0

@Jose Vega但正如我已經提到的那樣,這些函數實際上被調用。我甚至可以在ajax調用後得到警報。 – rstarter

+0

OP從完整的回調中調用attachDatePickerClasses和addDecisionStateDetailsFields。他需要爲這些功能的調用添加範圍。 –