您好我正在进行ajax通话
$(function () {
$('.pagination a').click(function () {
$.get(this.href, null, null, "script");
return false;
});
});
我认为$ get的最后一个参数将确保响应呈现为Javascript,但它正在以HTML格式处理。我不明白为什么。
我的控制器索引操作:
def index
@accounts = Account.paginate(:page => params[:page], :per_page => 10)
end
我在index.js.erb
alert("This is an AJAX request.");
日志:
Started GET "/admin/accounts?page=2&_=1415008178615" for 127.0.0.1 at 2014-11-03 09:50:01 +0000
Processing by Admin::AccountsController#index as HTML
Parameters: {"page"=>"2", "_"=>"1415008178615"}
然后以
结束 Rendered admin/accounts/_accounts.haml (207.1ms)
Rendered admin/shared/_content_card.html.haml (210.7ms)
Rendered admin/accounts/index.haml within layouts/admin (364.1ms)
答案 0 :(得分:1)
非常感谢所有试图回答这个问题的人。问题原来是在config / routes.rb
namespace :admin, :defaults => { :format => "html" } do
此行默认所有要处理为HTML的请求,并在删除默认值后,并将以下代码添加到控制器中的索引操作中,这一切都完美无缺。
respond_to do |format|
format.html
format.js {render :layout => false }
end
答案 1 :(得分:0)
Jquery ajax响应呈现为HTML而不是JS
这可能是由于很多事情。锚标记的href与ajax请求的url相同所以我认为你的js函数根本没有被调用 而且它正在发送一个html请求,因为那是一个链接默认情况下。要检查它是否正在调用您的js函数,您可以在js函数中使用简单的console.log或alert语句,并检查它们是否被触发。此外,如果您使用的是turbolinks
,那么您应该尝试使用jquery on function
。尝试这样的事情:
$(document).on("click",".pagination a", function(e){
e.preventDefault();
$.get(this.href, null, null, "script");
})
编辑:
如果get函数不起作用,请尝试jquery的详细ajax method
$(document).on("click",".pagination a", function(e){
e.preventDefault();
var url = $(this).attr('href');
$.ajax({
type: "GET",
url: url,
dataType: "script"
});
})
或强>
如果这不起作用,那么不要使用js调用ajax方法,只需使用link_to的remote
选项,它也会干掉你的代码
= link_to "some anchor", some_route_path, remote: true
答案 2 :(得分:-1)
尝试将dataType(最后一个参数)的类型更改为JSON
$(function () {
$('.pagination a').click(function () {
$.get(this.href, null, null, "json");
return false;
});
});
从这里: http://api.jquery.com/jQuery.get/
dataType
Type: String
The type of data expected from the server. Default: Intelligent Guess (xml, json, script, or html).
编辑: 这可能是您的RAILS服务器出错。您需要明确告诉rails路由渲染json。否则它呈现html模板。 因此,如果您将后端代码添加到此:
def index
@accounts = Account.paginate(:page => params[:page], :per_page => 10)
render json: @acounts
end
结果将是JSON
<强> EDIT2:强>
因此,如果您尝试获取脚本,可以尝试http://api.jquery.com/jQuery.getScript/
$.getScript(url, successCallback);