ajax xmlhttprequest를 사용하여 Rails 응용 프로그램에서 서버 측 프로세스 모니터링

StackOverflow https://stackoverflow.com/questions/126011

문제

웹 페이지에서 다음을 사용하고 있지만 처리 중에 서버에서 응답을 얻을 수 없습니다.

<script type="text/javascript">
<!--
   function updateProgress() {
      //alert('Hello');
      new Ajax.Request('/fmfiles/progress_monitor', {
         parameters: 'authenticity_token=' + encodeURIComponent(AUTH_TOKEN),
         onSuccess: function(response) {
            alert(response.responseText);
            fillProgress('progressBar',response.responseText);
         }
      });
   }
//-->
</script>

<% form_for( :fmfile, :url => '/fmfiles', :html => { :method => :post, :name => 'Form_Import', :enctype => 'multipart/form-data' } ) do |f| %>
...
<%= f.file_field :document, :accept => 'text/xml', :name => 'fmfile_document' %>
<%= submit_tag 'Import', :onClick => "setInterval('updateProgress()', 2000);" %>

fmfiles_controller.rb에서 'create'메소드는 파일을 행복하게 처리하고 올바른 결과를 얻습니다 (양식의 제출 버튼에 따라). '// alert ('hello ')'라인을 사용하지 않으면 2 초마다 인사하는 대화 상자가 예상대로 나타납니다.

그러나 서버는 '파일'에서 'Progress_Monitor'메소드에 호출을 기록하지 않습니다. 실패한 시도조차하지 않습니다.

링크를 클릭하면

<a href="#" onclick="updateProgress();">Run</a>

서버를 호출하고 응답을 받고 대화 상자를 표시하므로 경로와 구문과 이름 지정이 모두 정상이라고 가정합니다.

나는 이것이 왜 작동하지 않는지 정말로 모른다. 동일한 컨트롤러의 2 가지 메소드가 URL을 통해 호출되기 때문입니까?

OS X 10.5.5의 개발 환경에서 Rails 2.1.0을 사용하고 있으며 Safari 3.1.2를 사용하고 있습니다.

(NB는 다른 사람에게서 따릅니다 의문, 그러나 나는 그것이 자신의 질문을 장려하기에는 충분히 다르다고 생각합니다.)

도움이 되었습니까?

해결책

로그 파일에 'Progress_Monitor'를 호출하기 위해 메시지를 보지 못하면 요청이 전송되지 않을 수 있습니다.

이 시도:

  1. ajax.request의 상대 URL 대신 전체 URL을 사용해보십시오. Ajax.request가있는 일부 브라우저에서 상대 URL에 문제가있었습니다.

  2. FireBug 또는 IE 개발자 도구 모음을 활성화하십시오. Progress_Monitor에 대한 호출이 작동하는지 확인할 수 있어야합니다. Java 스크립트 오류가 있으면 이러한 도구를 사용하는 오류가 명확하게 표시됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top