javascript - Rails 4 中不执行 Ajax 响应

标签 javascript jquery ruby-on-rails ajax

我在 Rails 应用程序中使用 ajax。在我的应用程序 js 中,我有

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

所以我发送ajax请求来请求 Controller 操作自动填充。

自动填充方法:

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);
     }
   );     

关于javascript - Rails 4 中不执行 Ajax 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29140243/

相关文章:

javascript - 之前在 Javascript 中未定义

javascript - 如何检测 chrome 浏览器的 javascript 在 chrome 扩展应用程序中被禁用

ruby-on-rails - 佣金 Assets 之间的差异 :precompile:all and rake assets:precompile:primary

javascript - 如何在将 key 传递给 JavaScript 代码时确保其安全?

ruby-on-rails - Rails - 同一模型上有多个 "workflows"

javascript - 图片无限循环滚动

javascript - 为什么javascript执行会影响firefox中的css动画和动画gif

javascript - 如何加载json数据到id ="hello"

javascript - Bootstrap 切换菜单中的延迟

javascript - React 事件处理程序未删除