我试图每5秒执行一次ajax获取json结果。但是ajax它不起作用我总是得到:
SyntaxError {stack:(...),message:" Unexpected token<"}
$(document).ready(function(){
setInterval(function(){
var url = "/hangout_second_user";
$.ajax({
url: url,
type: "GET",
data: {"username" : "someusername"},
dataType: 'json',
success: function(){
alert(result);
},
error: function(xhr, textStatus, error) {
console.log("Impossible to connect");
console.log(xhr.statusText);
console.log(textStatus);
console.log(error);
}
});
}, 5000);
});
这是我的控制器的动作:
def hangout_second_user
@incoming_kid = Kid.where(username: params[:username]).first
prueba = REDIS.smembers "hangout:#{current_kid.id.to_s}"
if !prueba.empty?
current_kid.set_busy_status!
respond_to do |format|
format.json { render json: "{url:#{prueba[0].to_s}}", success: :ok, error: false }
end
end
end
更新
我改变了这样的渲染格式:
format.json { render json: prueba[0].to_json, success: :ok, error: false }
但我仍然得到和html文件,这就是我收到错误的原因。请帮忙
答案 0 :(得分:1)
您应该使用$ .ajax()函数或$ .getJSON()函数,因为$ .getJSON()也将执行AJAX调用。
所以可能的解决方案是:
setInterval(function(){
var url = "/hangout_second_user";
$.ajax({
url: url,
data: {"user_id" : "537c63ea20db9040d2000332"},
dataType: 'json',
success: function(result){
$.each(result, function(i, field){
alert(result);
});
},
error: function(xhr, textStatus, error) {
console.log("Impossible to connect");
console.log(xhr.statusText);
console.log(textStatus);
console.log(error);
}
});
}, 5000);
或者:
setInterval(function(){
var url = "/hangout_second_user";
$.getJSON(url, {"user_id" : "537c63ea20db9040d2000332"}; function(result) {
$.each(result, function(i, field){
alert(result);
});
});
}, 5000);
答案 1 :(得分:0)
你不能在javascript中使用“#{current kid.is.to_s}”。尝试将其值存储在隐藏字段中的某个位置并在javascript中访问它