2013-06-17 5 views
0

"saveToFile()"함수 실행 완료 후 첫 번째 ajax 호출을 실행하고 두 번째 ajax 호출을 실행하면 완료됩니다. 코딩 된 코드로 작동하지 않는 것 같습니다. 나는 아약스에 상당히 익숙해있어서 이것으로 조금 어려움을 겪고있다.ajax 호출 전에 javascript 함수 실행

// save composition to database 
$.ajax({ 
    type: "POST", 
    url: "_inc/save_to_db.php", 
    data: {jsonStr: canvasStr}, 
    success: function(data) { 
      // this saves the comp to the _comps folder on the server as a jpeg file (firth.js) 
      saveToFile(); 

      $.ajax({ 
      type: "POST". 
      url: "_inc/generate_thumbnail.php", 
      data: {imgFile: "<?php echo $_SESSION['UserID'] ?>_<?php echo $_SESSION['CompID'] ?>.jpg"}, 
      }); 
     } 
    }); 
+0

'saveToFile'을 (를) 공유 할 수 있습니까? –

+2

비동기 함수 인 경우 콜백을 사용하여 두 번째 아약스 요청 –

+1

을 보내야합니다.이 _need_ this : http://api.jquery.com/category/deferred-object/ – elclanrs

답변

1

작품을 나를 위해 : http://jsbin.com/upujur/2/edit

문제는 대신이 줄 쉼표의 도트 수 있습니다 :

다음과 같은 JavaScript 콘솔을 사용하고 있습니까? e FireBug 또는 개발자 도구로 프로그램을 디버깅 하시겠습니까?

+0

이로 인해 문제가 해결되었습니다. –

1

당신은 saveToFile 함수를 매개 변수로 AJAX가 완료되어 수행 호출하면 실행됩니다 콜백을 만들 수 있습니다. 예를 들어 :

$.ajax({ 
    type: "POST", 
    url: "_inc/save_to_db.php", 
    data: {jsonStr: canvasStr}, 
    success: function(data) { 
     // this saves the comp to the _comps folder on the server as a jpeg file (firth.js) 
     saveToFile(function(result) { 
      $.ajax({ 
       type: "POST", 
       url: "_inc/generate_thumbnail.php", 
       data: {imgFile: "<?php echo $_SESSION['UserID'] ?>_<?php echo $_SESSION['CompID'] ?>.jpg"}, 
      }); 
     }); 
    } 
}); 

하고 saveToFile 기능은 지금처럼 보일 수 있습니다 :

function saveToFile(successCallback) { 
    $.ajax({ 
     url: ..., 
     type: ..., 
     data: ..., 
     success: successCallback 
    }); 
}