2014-10-07 7 views
0

Google 애플리케이션 엔진에서이 애플리케이션이 google io talk에 나와있는 것과 유사한 작업을 수행하도록 앱을 설정하려고합니다. 이것은 기본적으로 완전히Google 애플리케이션 엔진에서 ajax 호출이 작동하지 않습니다.

<html> 
    <head> 
     <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
     <script language="JavaScript"> 
     function startUpload(f){ 
      if(typeof jQuery != 'undefined') { document.writeln("jQuery!"); } else { document.writeln("no jQuery :("); } 
      document.write("topwrite"); 
      $.ajax({url:'http://projectid.appspot.com/getFileUploadEndpoint', cache: false, success: function (data){ 
       document.write("i can write"); 
       var fd = new FormData(); 
       for(var n in data.params){ fd.append(n, data.params[n]); } 
       fd.append('file', f); 
       var xhr = new XMLHttpRequest(); 
       xhr.upload.addEventListener('progress', function (evt){ $('#progress').text(evt.loaded+'/'+evt.total);}, false); 
       xhr.upload.addEventListener('load', function (evt){ $('#progress').text('Complete'); }, false); 
       xhr.open(data.method, data.url); 
       xhr.send(fd); 
      }, 
      error: function(errorThrown){ document.write("didn't work did it"); document.write(errorThrown); } }); 
      return true; 
     } 
     </script> 
    </head> 
    <body> 
     <form id="uploadbanner" enctype="multipart/form-data" onsubmit="return startUpload(myfile)"> 
      <input id="fileupload" name="myfile" type="file" /> 
      <input type="submit" value="submit" id="submit" /> 
     </form> 
    </body> 
</html> 

은 내가 해당 URL로 이동하여 엔드 포인트 정보가 인쇄 볼 때마다 내가 새로 고침 시간만을 변경할 수 있기 때문에/getFileUploadEndpoint 잘 작동 알고있는 talk-에서 들어 올려 내 HTML 코드입니다 성공 함수 또는 오류 내부에서 실행하는 것 같다 (즉, "jQuery! topwrite"는 페이지간에 인쇄되지만 다른 것은 업로드하지 않고 업로드가 분명히 작동하지 않는다는 것을 알 수 있습니다.) 누군가 내가 뭘 잘못하고 있는지 말해 줄 수 있습니까?

+0

성공 콜백은 어디에서 왔습니까? – artm

+0

_ $. ajax_와 같은 줄에 있습니다. 오른쪽으로 스크롤해야합니다. 죄송합니다. –

+0

jQuery .ajax 성공 콜백에서 새 XMLHttpRequest *를 인스턴스화하고 있습니까? 왜 그걸 할거야? 왜 .ajax()도 사용하지 않을까요? 그리고 더 나은 것은 promises API를 사용하여 첫번째 Ajax 호출을 성공적으로 완료 할 때 두 번째 Ajax 호출을 실행할 수 있다는 것입니다. –

답변

0

예제 코드 (링크 된 비디오의 11:35 또는 동일한 페이지의 PDF)에는 document.write에 대한 호출이 포함되어 있지 않지만 여러 개의 호출이 포함되어 있습니다. 이것은 거의 확실하게 문제입니다. 콜백 내부에서 페이지가로드 된 후에 호출되면 현재 페이지를 대체하기 때문입니다. (일부 설명은 this question을 참조하십시오.)

XHR의 이상한 사용 : 비디오를 제대로 보지 못했지만 (왜 언급했는지는 알지만) 이상한 방법으로 Ajax 콜백을 작성합니다.

+0

document.write에 대한 모든 호출을 제거했지만 여전히 작동하지 않습니다. 전화를 걸는 스크립트 인 경우 페이지의 내용이 중요합니까? –

관련 문제