0

我在Rails控制器和JS文件之間來回發送信息。JavaScript AJAX&Rails控制器(來回)

  1. 我通過JS送的形式向控制器(作品)

    $("#help-email-submit").ajaxSubmit({url: '/help/send_help_email', type: 'post' }); 
    
  2. 我能趕上事件控制器(作品)

    def send_help_email 
        .... 
    end 
    
  3. 在發送上述請求的同一個JS文件中,如何捕獲JSON響應(如下)? (不工作)

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

    在JS文件

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

UPDATE

我注意到,阻止成功的一個JS錯誤:從執行的函數:

錯誤

TypeError:'undefined'不是一個函數(評估'$(「#help-email- form」)。ajaxSubmit({url:'/ help/send_help_email',type:'post',complete:handlerResponse} )')

這是觸發錯誤

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

這是完整的塊

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,它接受相同的選項,該jQuery.ajax method的行。因此,爲了得到響應,您可以通過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代碼從執行(雖然職位是工作得很好) 類型錯誤:「未定義」不是一個函數(計算' $( 「#求助電子郵件提交」)ajaxSubmit會(網址:{url: '/幫助/ send_help_email',輸入: '後',完整的:handlerResponse})。') –

+0

在我的代碼的函數的名稱爲'handleResponse' ,而不是'handlerResponse'。檢查它是否在你的代碼 –

+0

匹配唉唉我注意到,並改變了這一切。我在ajaxSubmit上找到了這些信息。它看起來不是jQuery核心的一部分,需要一些外部庫。 http://jquery.malsup.com/form/ –