【发布时间】:2015-11-09 04:59:42
【问题描述】:
我正在制作日历,并在页面加载时发出 ajax 请求以从 rails db 获取一些数据。
ajax 调用在页面加载时成功接收对象。
当我单击下一个或上一个按钮以获取上个月或下个月的数据时,即使发生 ajax 调用,成功回调也没有接收到数据对象
我收到一组对象,我可以像下面的代码一样访问它们,但仅用于 页面加载 ajax 调用,ajax 调用会获得状态代码 200 - 每次都可以,但没有收到 json 对象在下一个请求。
换句话说,console.log(data) 仅适用于页面加载事件,而 console.log($month) 每次都有效
更新:使用开发工具,我可以看到响应数据,但无法通过 ajax 成功访问它们...
更新 2:当我取消注释错误时,我收到消息“错误代码是:OK”
我的 ajax 代码如下所示
function retrieve($month) {
console.log($month);
var jsondata = {
events: {
month: $month,
}
}
$.ajax({
cache: false,
type: "POST",
url: "/events/find",
data: jsondata,
dataType: json,
statusCode: {
200: function() {
//alert("200");
},
202: function() {
//alert("202");
}
},
success: function(data) {
//alert("Data Send!");
//var data = JSON.stringify(data);
console.log(data);
for (var i = 0; i < data.length; i++) {
var day = data[i].date.substring(0, 2);
$("td[data-day='" + day + "']").addClass('added');
}
},
error: function(xhr) {
//alert("The error code is: " + xhr.statusText);
}
});
}
events_controller
def find
params = event_params
@events = Event.where('date LIKE ?',"%#{params[:month]}%")
respond_to do |format|
if @events
format.json {
render json: @events.to_json
}
else
render 'index'
end
end
end
private
def event_params
params.require(:events).permit(:date, :timerange,:month)
end
来自 rails 日志的示例响应
Started POST "/events/find" for ::1 at 2015-08-16 16:09:59 +0300
Processing by EventsController#find as */*
Parameters: {"events"=>{"month"=>"September"}}
Event Load (0.1ms) SELECT "events".* FROM "events" WHERE (date LIKE '%September%')
Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.1ms)
【问题讨论】:
-
请删除您之前的问题,或者如果您已经完善它,请编辑它。这似乎是以不同的方式提出的同一个问题。
-
关闭了另一个。这更清楚了。
-
下一个/上一个时,确切的控制台输出(如果有的话)是什么?您是否尝试在开发者工具中调试调用??
-
我收到一组对象,我可以像上面的代码一样访问这些对象,但仅用于页面加载 ajax 调用,ajax 调用的状态代码为 200 - 每次都可以,但下次没有收到 json 对象要求。换句话说,console.log(data) 仅适用于页面加载事件,而 console.log($month) 每次都有效
标签: javascript jquery ruby-on-rails ajax