2012-10-05 3 views
3

성공 (콜백) 함수에서 요청 된 매개 변수를 가져올 수 있습니까? 예를 들어jQuery - AJAX - 성공 함수에서 요청 된 매개 변수 얻기

물론

function handleSubmitClick(evt) { 
    evt.preventDefault(); 

    var setupOptions = { 
     success: loadSearch, 
     type: "POST", 
     dataType: "json",    
     url: "../search.x", 
     error: handleError, 
     timeout: 10000 
    };     
    $("#searchForm").ajaxSubmit(setupOptions); 

    return false; 
} 

function loadSearch(data, statusText, xhr, $form) { 
    // here is where I would like to get the HTTP request 
    // parameters 
} 

, 나는 handleSubmitClick 동안 글로벌 변수에 요청 PARAMS를 저장하고 loadSearch에서 변수를 읽을 수 있습니다. 그러나 사용자가 첫 번째 요청에서 loadSearch를 실행하기 전에 다른 요청을 제출하면 첫 번째 요청이 처리를 완료 할 때까지 사용자가 다른 요청을하지 못하게하려는 경우 해당 변수의 값이 무시됩니다.

현재 서버가 응답 데이터에 요청 매개 변수를 반영하지만, 요청 매개 변수가 서버가 요청 매개 변수를 반향하지 않고 클라이언트에서 이미 사용할 수 있기를 기대합니다. 감사.

답변

4

는 현재 솔루션이 무엇보다 다른 AJAX 기능을 사용하지만 이것은, 당신이 찾고있는 무엇을 할 수

$.post(your_ajax_request_url, 
    { 
     success: loadSearch, 
     type: "POST", 
     dataType: "json",    
     url: "../search.x", 
     error: handleError, 
     timeout: 10000 
    }, function(response){ 

     console.log($(this).attr('data')); 

    }, "json"); 

$ (이) .attr ('데이터') 할 것이다 원래 요청을 params를 사용하면 객체처럼 취급 할 수 있으므로

$(this).attr('data')->dataType 

은 "json"이됩니다.

+0

Shawn, 답장을 보내 주셔서 감사합니다. jQuery Form Plugin [link] (http://www.malsup.com/jquery/form/)을 사용하고 있습니다. 나는 클로저 아이디어를 적용하고 이것을 폼 플러그인으로 작업 할 수 있다고 생각합니다. 더 많이 생각하지만, 아마도 서버가 매개 변수를 반향시키는 것이 가장 좋습니다. 결국이 매개 변수를 기반으로 응답을 작성합니다. 나는 당신이나 다른 사람들의 생각을 환영하지만 그것은 내가 지금 기대고있는 것처럼 보인다. 당신의 대답에 다시 한번 감사드립니다. – James