0

레일 컨트롤러와 JS 파일간에 정보를주고 받고 있습니다.JavaScript AJAX & Rails 컨트롤러 (앞뒤)

  1. 나는 (작품) 나는 (작품)

    def send_help_email 
        .... 
    end 
    
  2. 컨트롤러에서 이벤트를 잡을 수있어

    $("#help-email-submit").ajaxSubmit({url: '/help/send_help_email', type: 'post' }); 
    
  3. JS를 통해 컨트롤러에 양식을 보내고있다

    위 요청을 보낸 동일한 JS 파일에서 JSON 응답 (아래)을 어떻게 캡처합니까? JS 파일에서

    def send_help_email 
        ... 
        cst_str = @current_support_ticket.to_s 
        respond_to do |format| 
        format.json { render :json => cst_str } 
        end 
    end 
    

    을 (작동하지 않는다)

    var xmlhttp = new XMLHttpRequest(); 
    alert(xmlhttp.responseText); 
    

I가 성공 방지하는 JS 오류 발견

UPDATE : 실행에서 기능 :

오류

TypeError : '정의되지 않은'은 ('$ ("# help-email- form")을 평가하는 함수가 아닙니다.) ')는이 완료 블록을

var handlerResponse = function(data) { 
alert(data); 
}; 

$('#help-email-submit').live('click', function(e) { 
    $('#sender-email-wrapper').fadeOut('fast', function() { 
     $("#help-email-sent").fadeIn('slow'); 
    }); 
    $("#help-email-form").ajaxSubmit({url: '/help/send_help_email', type: 'post', complete: handlerResponse }) 
    e.preventDefault(); 
}); 
+0

게시 할 수있는 스택 오류가 있습니까? – varatis

+0

콘솔에서'$ .fn.ajaxSubmit'은 무엇을 제공합니까? –

+0

'$ .fn.ajaxSubmit'은 undefined를 반환합니다. –

답변

1

이다 ajaxSubmit documentation에 의하면, 동일한 I 션 jQuery.ajax method을 허용 오차

$("#help-email-form").ajaxSubmit({url: '/help/send_help_email', type: 'post', complete: handlerResponse }) 

트리거링되는 라인

. 그래서, 응답을 얻기 위해, 당신은 통화에 complete 콜백을 전달할 수 있습니다

var handleResponse = function(data) { 
    // Use response here 
}; 

$("#help-email-submit").ajaxSubmit({url: '/help/send_help_email', type: 'post', complete: handleResponse }); 

사용하는 jQuery를 버전에 따라, 당신은 또한의 반환 값에 complete 방법을 통해 콜백을 전달할 수 있습니다 jQuery.ajax :

$("#help-email-submit").ajaxSubmit({url: '/help/send_help_email', type: 'post'}).complete(function(data) { 
    // Use response here 
}); 
+0

그게 작동하는 것 같아요, 지금은 유형 오류를 받고있어, handlerResponse의 코드가 실행중인 것을 막을 수 있다고 생각합니다. (게시물은 정상적으로 작동하지만) TypeError : '정의되지 않은' –

+0

내 코드에있는 함수의 이름은'handleResponse'입니다. ('# help-email-submit') ajaxSubmit ({url : '/ help/send_help_email', 'post', complete : handlerResponse} 'handlerResponse'가 아닙니다. 코드와 일치하는지 확인하십시오. –

+0

아하니, 나는 그것을 알아 차리고 그것을 변경했습니다. 이 정보는 아약스에서 찾았습니다. 제출하십시오.jQuery 코어의 일부가 아니며 일부 외부 라이브러리가 필요합니다. http://jquery.malsup.com/form/ –