アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下のような関数を作って、 var rs = html_get("取得したいURL"); で読んでも空が返ってきてしまいます。ちなみに、console.log(rs)はちゃんと表示されます。

どうすればいいのでしょうか?


function html_get(url){

var request = new XMLHttpRequest();

request.addEventListener("load", function(ev){
if (200 <= request.status && request.status < 300) {
var rs = request.responseText;
console.log(rs);
return rs;
}
});
request.open("GET", url);
request.send();
}

A 回答 (1件)

非同期処理の場合rsを得る前に関数が終わってしまう


同期処理でreadystateをチェックしてみて

function html_get(url){
var request = new XMLHttpRequest();
var rs = "bad!";
var async=false;//async=trueにすると非同期
request.open("GET", url ,async);
request.onreadystatechange=function(){
if((request.readyState == 4 ) && (request.status == 200 )){
rs = request.responseText;
}
}
request.send(null);
return rs;
}

ただし全てのブラウザがXMLHttpRequest()に対応しているわけではないので例外処理が必要
    • good
    • 0
この回答へのお礼

ありがとうございます!これで解決できました!!

お礼日時:2015/12/30 13:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!