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代码没有被执行。这是火球中显示的反应:
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;ajax 之后
$('#request_name').on('focusout', function () {
var clientName = $(this).val();
$.ajax({
url: "/requests/autofill/"+clientName,
type: "GET",
contentType: 'text/javascript'
});
return false;
});
相关文章:
- 不再使用innerHTML进行AJAX响应.(代码未得到响应)
- 为什么可以't我使用了AJAX响应的一部分
- Ajax响应转换
- 如何在数据表中设置从Ajax响应选中的复选框
- 在Javascript中的ajax响应之后未调用Dropdown事件
- RubyonRails-Ajax响应的问题
- Ajax:Ajax响应中的链接不起作用
- 如何执行ajax响应返回的javascript函数
- 带有 AJAX 响应或 AJAX 响应的 IF 条件.响应.Text 不起作用
- 正在检查ajax响应中的错误数据
- 如何从ajax响应中重新加载整个页面
- 如何使用jQuery/Ajax响应特定的提交按钮
- 是浏览器在AJAX响应中自动处理的HTTP标头
- Masony无法处理ajax响应
- 使用yii2表单等待ajax响应
- jquery返回ajax响应和用户定义的变量到函数
- 使用Ajax响应更新TextBox
- 如何在jquery ajax响应后设置jquery滑块的起始值
- Rails 4中不执行Ajax响应
- jquery解析ajax响应