我一直在尝试一个简单的控制台应用程序,它将完成两件事。 (1.)它将发出异步Ajax请求。 (2.)将responseText记录到控制台。
为此,我向openweathermap.org发出了ajax请求,并尝试将responseText解析为JSON,最后将其记录到控制台。
请在下面找到我的代码来实现此目的
var data ;
var url = "http://api.openweathermap.org/data/2.5/weather?id=7535661&APPID=56104080d6cb412468dad1627cb27da6";
var myRequest;
function sendRequest(url){
myRequest = new XMLHttpRequest();
myRequest.onreadystatechange= function(){
if(myRequest.readyState == 4 && myRequest.status== 200){
data= JSON.parse(myRequest.responseText);
}
myRequest.open("GET", url, true );
myRequest.send();
}
console.log(data);
}
sendRequest(url);
每当我尝试运行它时,它总是在退回"未定义"。
请帮帮我。
答案 0 :(得分:2)
您的inner_user = Arel::Table.new(:users, as: :i_user)
inner_ubg = Arel::Table.new(:user_by_groups, as: :i_ubg)
User.joins(:groups).where(
Arel::Nodes::In.new(
Group.arel_table[:id],
inner_user.
project(inner_ubg[:group_id]).
join(inner_ubg).on(inner_user[:id].eq(inner_ubg[:user_id])).
where(inner_ubg[:active].eq(true)).
where(inner_user[:id].eq(4))
)
).to_sql
#=> SELECT "users".* FROM "users"
# INNER JOIN "user_by_groups" ON "user_by_groups"."user_id" = "users"."id"
# INNER JOIN "groups" ON "groups"."id" = "user_by_groups"."group_id"
# WHERE "groups"."id" IN ((
# SELECT "i_ubg"."group_id" FROM "users" "i_user"
# INNER JOIN "user_by_groups" "i_ubg" ON "i_user"."id" = "i_ubg"."user_id"
# WHERE "i_ubg"."active" = 't' AND "i_user"."id" = 4
# ))
回调中包含open()
和send()
种方法。因此,除非请求完成,否则您永远不会打开连接。试试这个:
onreadystatechange()