【发布时间】:2013-09-29 16:52:11
【问题描述】:
在控制器中,对 AJAX 请求的响应如下:
@response = {resp: "ack"}
render json: @response
处理 AJAX 的 JS 是:
$('#some_btn').click(function() {
var valuesToSubmit = $('#some_form').serialize();
var url = $('#some_form').attr('action');
console.log("VALUE: " + valuesToSubmit);
console.log("URL: " + search_url);
$.ajax({
type: 'POST',
url: url, //sumbits it to the given url of the form
data: valuesToSubmit,
dataType: "JSON",
success: function(data) {
console.log("saved");
console.log(data);
}
});
return false;
});
但问题是我没有收到控制台消息,而是页面重新加载,我在新页面上获得了 json 作为文本。如何防止这种“非真 AJAX”行为?
【问题讨论】:
-
尝试使用 dataType: "json" 而不是 "JSON"
-
你真的触发了ajax请求吗?
-
在 $.ajax 调用之前,您是否至少收到了前两条控制台消息?根据您的 Rails 日志,它是否会进入您期望的控制器和操作?您是否使用 Firebug 之类的工具检查了请求和响应的标头,并将它们与工作 AJAX 请求中使用的标头进行了比较?
-
尝试通过添加断点在firebug或任何其他等效浏览器中调试上述javascript。
标签: ruby-on-rails ajax web reload