2012-07-22 6 views
1

나는 숨겨진 필드 값을 전달하고 그에 따라 값이 다음 파일에 전달되고 질의가 i 업데이트하는 값 (html)을 다시 실행하는 ajax 함수를 사용하고 있습니다. 나중에 숨겨진 필드에 있지만 문제는 숨겨진 필드의 업데이트 된 값을 사용하여 변수를 전달할 때 dosent가 새로운 값을 대신 사용하여 숨겨진 필드의 이전 값을 사용하는 것입니다. 아무도이 날 도울 수아약스 요청 후 숨겨진 필드의 값

var pre_prod_id = $('.prod_id').val(); //old hidden field value 
$.ajax({ 
    type: "GET", 
    url: "eg", 
    cache: false, 
    success: function(html) { 
     $('.prod_id').val(html); // got updated value via ajax and updated 
    } 
}); 
var prod_id = $('.prod_id').val(); // getting new value of hidden field 
alert(prod_id); // alert gives still the old value ??? 
$target = 'egab=' + abd + '&& abc=' + abc + '&& action=' + action + '&& prod_id=' + prod_id; 

내가 뭘 하려는지 단계에서 언급 한? 누군가가이 문제에 대한 해결책을 찾길 바랍니다.

+0

어떤 솔루션 친구입니까? 이 코드는 도움이 필요합니다. –

답변

2

$ .ajax 호출은 비동기식이므로 두 번째 var prod_id = $('.prod_id').val(); 문을 실행하기 전에 코드가 서버에서 응답을받을 때까지 기다리지 않습니다.

Ajax 호출에 대한 응답이 수신 된 이후에 실행 된 코드가 'success'함수 안에 들어 있는지 확인하는 유일한 방법입니다.

다른 접근법 (권장하지는 않지만)은 async : false을 설정하여 ajax 호출을 동기식으로 만드는 것입니다. 그러나 이것은 브라우저를 응답하지 않게 만들 수 있기 때문에 나쁜 관행입니다. 위에서 설명한대로 코드를 리팩터링하는 것이 좋습니다.

+0

하지만 $ target = ''을 입력하면 나머지 코드는 $ target을 감지하지 못합니다. '성공'기능 내부. 그 대안? –

+0

$ target을 사용해야하는 나머지 코드는 서버에서 응답을받은 후에 만 ​​실행해야한다고 가정합니다. 어떤 경우에는 '성공'안에 모든 코드를 넣어야합니다. 코드가 많으면 명명 된 함수에 넣으십시오. – codebox

+0

예 코드가 많으며 API도 비슷합니다. 나는 더 많은 기능을 위해 그것을 사용하고 있습니다. 신이 이걸로 갇혀 있고 코드에서 일을 할 수 없다는 것을 안다. –

관련 문제