2011-12-05 2 views
0

내 아약스와는 다소 이상합니다. 나는 아약스를 호출하는 함수가 있고 메소드의 구조는 다음과 같다. 이벤트가 enter 키를 통해 트리거되면 특정 함수가 호출 된 후 해당 함수가 ajax 함수를 호출하고 값을 리턴한다. 실제로 잘 작동하지만 두 번째 이벤트에서만 트리거되었습니다. 예를 들어 텍스트 상자에 초점을 맞춘 다음 Enter 키를 누릅니다. 처음에는 아무 것도 나타나지 않지만 다음에 입력하면 잘 작동하므로 Enter 키를 누릅니다. 누구나 왜 그렇게 생각하는지 알아?Ajax는 첫 번째 트리거시 실행되지 않습니다

function myFunction(val){ 
    var passVal = updateVal(val); 
    alert(passVal); //on first load of page/after refreshing the page, this wont happen on first trigger of event 
} 

function updateVal(val){ 
    $.ajax({ 
      type : 'POST', 
      url : 'updateVal.php', 
      dataType : 'json', 
      data: "val="+val, 
      complete : function(data){ 
       bool = true;         
      }, 
      error : function() { 
       bool = false; 
      } 
    }); 

    return bool; 
} 
+0

이 어떻게하여 myFunction가 호출되는 것입니다

function updateVal(val){ $.ajax({ type : 'POST', url : 'updateVal.php', dataType : 'json', data: "val="+val, success: function(data) { /* Do something with the DATA once the server replied, it may take a while */ alert(data); }, error : function() { alert(false); } }); } 

같은 뭔가가 필요? 직접 또는 거기에 부울 검사 또한 myFunction을 호출 할 다른 이벤트가 무엇입니까? – mprabhat

답변

0
동기에 아약스 코드를 변경

: 여기 내 Ajax 코드의

$.ajax({ 
      type : 'POST', 
      async: false, 
      url : 'updateVal.php', 
      dataType : 'json', 
      data: "val="+val, 
      complete : function(data){ 
       bool = true;         
      }, 
      error : function() { 
       bool = false; 
      } 
    }); 
0

$ 아약스는 즉시 반환, 배경 호출입니다; 당신이이이 동기 호출로 UI 스레드를 차단하지 않습니다으로 가장 좋은 방법은

+0

필자는 아마도이 코드가 더 좋을 것이라는데 동의한다. 아마도 그가 우리에게 보여 주었던 것은 단순화 된 버전 일 뿐이며, 실제 호출 코드가 동기 호출로 구성된 경우 변경 사항이 적을 수 있습니다. –

+0

하지만 나는 최상의 솔루션을주고 싶다. – PhilippeLM

관련 문제