![](/img/trans.png)
[英]<script> tag is shown in ajax response and executed?
[英]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
alert("hello"); $('#request_mobile").val('hi there');
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.