簡體   English   中英

在Rails 4中不執行Ajax響應

[英]Ajax response is not executed in Rails 4

我在Rails應用程序中使用ajax。 在我的應用程序js中

 $('#request_name').on('focusout', function () { var clientName = $(this).val(); $.ajax({ url: "/requests/autofill/"+clientName, type: "GET", contentType: 'text/javascript' }); 

所以我發送ajax請求以請求控制器操作自動填充。

自動填充方法:

 def autofill @client = Client.where("name=?",params[:name]).take respond_to do |format| format.js format.html end end 
在我的autofill.js.erb文件中,我有:

 alert("hello"); $('#request_mobile").val('hi there'); 
(警告僅用於測試)我想要做的是使用我的autofill.js.erb文件中的一些值更新#request_mobile id字段。 問題是我的autofill.js.erb代碼沒有被執行。 這是firebag中顯示的響應:

 alert("hello"); $('#request_mobile").val('hi there'); 

但是什么也沒有發生,即使沒有發出警報。 我不知道我在做什么錯?

我不認為我完全理解這里出了什么問題,但是我可以看到一些進一步了解問題的方法。 首先,我相信使用$.get代替$.ajax會更好。 設置起來有點簡單。

第二件事-您實際上不需要設置中的contentType參數,因為它與返回數據的類型無關,而與請求中發送的數據類型無關。 響應數據類型在dataType參數中設置。

第三件事,即使dataType設置為script ,我也不確定它將被執行,因此,如果您對安全性有100%的把握,最好的方法是手動進行操作。

最后,這是應該起作用的方法。

$('#request_name').on('focusout', function () {
   var clientName = $(this).val();
   $.get("/requests/autofill/"+clientName, function(data) {
        eval(data);
     }
   );     

問題出在您的客戶端。 當它收到Ajax響應時,就不會將其作為javascript執行。 它以文本形式執行。

添加return false; 阿賈克斯之后

$('#request_name').on('focusout', function () {
   var clientName = $(this).val();
   $.ajax({
    url: "/requests/autofill/"+clientName,
    type: "GET",
    contentType: 'text/javascript'         
   });
   return false;
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM