2012-07-01 5 views
0

일부 체크 박스와 제출 버튼이있는 페이지가 있습니다. 저는 AJAX를 사용하여 PHP 스크립트 인 calc.php에 체크 박스 값을 게시하고 데이터로 일부 계산을 실행 한 다음 그 결과를 PHP 세션 변수에 할당합니다. 다른 PHP 스크립트 인 json.php가 있는데, 세션 데이터를 가져 와서 jquery를 JSON으로 인코딩하여 div에 표시합니다. 내 문제는 사용자가 제출할 데이터 세트의 양, 하위 번호 및 사용자가 세트 수를 변경하면 내 디스플레이 루프가 동기화되지 않게 설정하도록 허용하는 것입니다.JSON 데이터를 반복하여 DIV에 표시합니다.

예를 들어 데이터 세트가 3 개인 경우 #button을 눌러 하나씩 제출합니다. 마지막 세트 후, (count == max)가 실행되면. 이제 그들은 다른 계산을하고 원하는 경우 데이터 세트 수를 변경할 수 있습니다. 그들이 2로 바꾸면 출력이 1로 재설정되고 #log가 비워지는 대신 4로 출력됩니다.

나는 그게 단순한 걸 알고 있지만, 지금은 2 시간 동안 고쳐서 그 문제를 알아낼 수 없습니다. 그 밖의 모든 기능은 완벽하게 작동하며 출력 카운터는 올바르게 수행되지 않습니다.

+0

. 나는 사용자가 제출 한 데이터를 매번 가져 와서 결과를 표시하도록하고있다. 내 문제는 내 루프의 논리입니다. – user1461465

+0

충분히 공정하게; 문제가 무엇인지 파악하기 위해 몇 번 읽어야했습니다. [Backbone] (http://backbonejs.org/#FAQ-events) 및 기타 최신 프레임 워크를 통해 주로 데이터 유형을 확인하고 데이터 업데이트를 모니터링하고 바인딩 할 수 있습니다. 여기도 거기에 없으며 단지 그곳에 있음을 언급하고 싶었습니다. –

+0

이것이 실제 코드입니까? 끝에 괄호가 빠져 있습니다. – rcdmk

답변

1

비동기 호출을 JSON으로 실행 중입니다. 사용자가 전화를 너무 빨리 보내서 전화가 다시 작동하지 않으면 문제가 발생합니다.

두 가지 옵션이있어 :

  1. 실행 기적 당신의 JSON의 모든 (사용 비동기 : 당신의 JSON 호출에서 false)를
  2. 현재에 돌아 오는 카운터 만 프로세스 이벤트를 활용을 색인. # 2

사이비 코드 : 내가 뭐하는 거지 될 것 같지 않습니다

var pCounter = 0; 
function doSomeAjax() 
{ 
    pCounter++; 
    $.ajax('url',{ 
     data:{count:pCounter} 
     success:function(data) 
      { 
       // your json should return the current counter index 
       if (data.counter != pCounter) return; 
       // execute normally. 
      } 
    }); 
} 
+0

비동기로 설정하겠습니까? 문제가 발생한 경우 문제를 해결하려면 false로 설정 하시겠습니까? 나는 그 일을 시도했지만 그것을 고쳐주지 않았다. – user1461465

+0

옵션 2를 구현하려고하는데 어떻게해야할지 잘 모르겠습니다. 더 설명해 주시겠습니까? – user1461465

관련 문제