2013-04-13 2 views
0

양식 제출을 위해 JS 코드를 따라했습니다. submitForm 함수에 양식 제출을 계속 했으므로 selectoraction 값을 submitForm 함수에 전달하여 여러 양식에 사용할 수 있습니다. .JS : 콜백 함수가 실행되지 않습니다.

function submitForm(selector, action, onComplete) { 
    var response 
    $(selector).submit(function (e) { 
    e.preventDefault(); 
    var data = $(this).serializeArray(); 
    $.ajax({ 
     type: 'POST', 
     url: action, 
     data: data, 
     dataType: 'json', 
     a 
     sync: false, 
     success: function (data) { 
     response = data; 
     } 
    }); 
    }); 
    return response; 
} 
submitForm(".lform", "user.php", function (response) { // Callback function 
    // Doing necessary stuff 
}); 

위 코드에서 콜백 기능이 실행되지 않고 있습니다. 그 이유는 무엇입니까? 그리고 내부 콜백 함수는 다음 코드가 있습니다.

location.reload(); // To refresh the total DOM, 
$(".c_form").dialog({ 
    closeOnEscape: false, 
    title: title, 
    modal: true, 
    close: function() { 
    $(this).dialog('destroy').hide(); 
    } 
}); 

페이지를 새로 고침 한 후 표시 대화 상자를 표시 할 수 있습니까?

+2

'var response'는 AJAX 요청이 요청을 완료하기 전에 함수가 이미 반환되었으므로 초기화되지 않습니다. – Aiias

답변

2

response으로 반환 할 수 없습니다. 그때 AJAX가 아직 을 배치하지 않았기 때문에 여전히 undefined입니다.

콜백 함수는 세 번째 인수 인 onComplete입니다. AJAX 성공하면, 그것을 실행하고 그것을 data을 통과 : 내가 꿈꾸는 @Joseph에 동의

success: function (data) { 
    onComplete(data); 
} 
+0

나는 당신이 어떻게 잘 작동하는지 제안 해 보았습니다, 페이지와'dialogbox' 문제의'reloading'을 기대합니다. 이 두 가지를 예상대로 작동시킬 수 있습니까? 감사합니다 –

+1

다시로드 콜백 문제는 location.reload()를 호출 할 때 페이지가 다시로드되고 페이지가 다시로드되기 때문에 코드가 다시 실행되지 않는다는 것입니다. – skukx

2

을 또한 오류 콜백을 추가, 귀하의 요청에 오류가 있습니다 때문에 성공 호출이 다시 실행되지 않았는지의 추가, 그것은 그냥 성공 호출과 같은 :

error: function() { 
    alert("ERROR!!"); 
} 

하고 또한 당신의 코드는 대화 이런 식으로, 당신은 다시로드 메소드를 호출 한 후 대화 상자를 렌더링하고, 이전 페이지가 할 수있는이 새로운 DOM 요소를 생성 보여 질수 새 페이지에 아무것도 (다시로드 후), 내 조언은 쿼리 문자열 매개 변수를 보낼 것입니다같은 대화를 보여주는 것을 나타냅니다및 JS 페이지에서이 매개 변수가 대화 상자를 표시하는지 확인하십시오.

+0

답변 해 주셔서 감사합니다 –

관련 문제