제목에 대해 유감이지만 어떻게 부르는지는 몰랐습니다. DOM 조작이 끝나기를 기다리는 Ajax를 기다리는 중
나는 성공을 페이지에 일부 HTML 요소를 추가하는 일부 아약스 통화 기능을 가지고 :function ajax_submit_append(form_data, url, result, complete) {
$.ajax({
url: url,
type: 'POST',
data: form_data,
success: function(msg) {
var res = $(msg).filter('span.redirect');
if($(res).html() != null){
window.location.replace($(res).html());
return false;
}
$(result).append(msg);
},
complete: complete()
});
};
기능 가장 중요한 것은으로 .Append 다음이 아약스 기능이 일부에서 호출된다 성공에 무언가를 이 같은 버튼 .click 기능 :
$(function() {
$("#product_list_add_btn").click(function(e){
ajax_submit_append(
form_data = {
product_name: $('.selectpicker option:selected').val(),
amount: $('#amount').val()},
"<?php echo site_url('admin_panel/new_order/add_product'); ?>",
'#add_product_result',
calculateSum
);
return false;
});
});
내가 달성하고자하는 것은으로 .Append가 아약스를 통해 수행 한 후 calculateSum 기능 (합계 테이블 열이)라고한다는 것입니다. 내가 당신에게 calculateSum을 제시,하지만 난 거기에 결함이 아무것도 생각 : 나는이 완료 이벤트를 아약스에 calculateSum를 추가 할 때
지금은, 여전히 새로운 행으로 .Append
편집으로 테이블에 추가되기 전에 호출된다.
function calculateSum() {
var sum = 0;
// iterate through each td based on class and add the values
$(".countit").each(function() {
var value = $(this).text();
// add only if the value is number
if(!isNaN(value) && value.length != 0) {
sum += parseFloat(value);
}
});
$('#total_price').text(sum);
alert("test");
};
만약 내가 추측해야만한다면, 나는 click 이벤트로 그 무언가를 말할 것입니까?
해결 방법? jqXHR의 완료() 메소드를 사용하여
은 내가 먼저 당신은 코드에서 볼 수 있듯이에서 complete 이벤트로했지만, 결과를 예상되지 않았다. async를 추가 한 후 : false, 변경하지 않음, alert ("test"), 항상 행이 추가되기 전에 팝업됩니다. – patrykos91