ajax xmlhttprequest를 사용하여 Rails 응용 프로그램에서 서버 측 프로세스 모니터링
-
02-07-2019 - |
문제
웹 페이지에서 다음을 사용하고 있지만 처리 중에 서버에서 응답을 얻을 수 없습니다.
<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'를 호출하기 위해 메시지를 보지 못하면 요청이 전송되지 않을 수 있습니다.
이 시도:
ajax.request의 상대 URL 대신 전체 URL을 사용해보십시오. Ajax.request가있는 일부 브라우저에서 상대 URL에 문제가있었습니다.
FireBug 또는 IE 개발자 도구 모음을 활성화하십시오. Progress_Monitor에 대한 호출이 작동하는지 확인할 수 있어야합니다. Java 스크립트 오류가 있으면 이러한 도구를 사용하는 오류가 명확하게 표시됩니다.