

Ajaxを使ったJavascriptで、以下の①と②は個別には問題なく動くのですが、  
これを同時に使用とすると、②のwindow.onbeforeunload()関数が呼び出されません。  
window.onbeforeunloadを使う場合の注意点などがありますか？

画面遷移時なので、console.log等も残せないようなので、デバッグにも苦労しています。  
少し長くてすいませんが

コード①

[code]

    <script language="JavaScript">
    // ボタン無効の解除
    // タイマーによる連続クリック防止を解除する
    function buttonenable(){
        var btn_L = document.getElementById('button_L');
        var btn_R = document.getElementById('button_R');
        btn_L.disabled = false;
        btn_R.disabled = false;
    }
    
    //XMLHttpRequestオブジェクト生成
    function createHttpRequest(){
        if(window.XMLHttpRequest){  //Chrome,Firefoxなど
            return new XMLHttpRequest()
        }
        else if(window.ActiveXObject){
            try {   //MSXML2以降用
            return new ActiveXObject("Msxml2.XMLHTTP")
            } catch (e) {
                try {   //旧MSXML用
                    return new ActiveXObject("Microsoft.XMLHTTP")
                } catch (e2) {
                    return null
                }
            }
        }
        else {
            return null
        }
    }
    //POSTの準備、コールバック関数の指定、POST
    function requestFile( data , method , fileName , async )
    {
        //XMLHttpRequestオブジェクト生成
        var xhrobj = createHttpRequest();
    
        //open メソッド
        xhrobj.open( method , fileName , async );
    
        //サーバに対して解析方法を指定する
        xhrobj.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded')
    
        //send後のステータス変化毎のアクションを指定
        xhrobj.onreadystatechange = function()  {
            //readyState値は4で受信完了
            if (xhrobj.readyState==4)
            {
            //コールバック関数
            on_loaded(xhrobj);
            }
        }
        //send メソッド
        xhrobj.send( data);
    
        //連続クリック防止のため、ボタン無効タイマーを設定
        var btn_L = document.getElementById('button_L');
        var btn_R = document.getElementById('button_R');
        btn_L.disabled = true;
        btn_R.disabled = true;
        setTimeout('buttonenable()', 500);  //0.5秒ボタンを無効後に解除
    }
    
    //コールバック関数 ( 受信時に実行 )
    function on_loaded(obj)
    {
        //レスポンスを取得
        res  = obj.responseText;
        //デバッグ用、レスポンス内容をAlertDialogに表示
        alert(res);
    }
    </script>
    
[/code]

コード②

[code]

    <script language="JavaScript">
    //画面遷移時の処理
    window.onbeforeunload = function(){
        var xhrobj = new XLMHttpRequest();
        //var hhrobj = createHttRequest();
    
        xhrobj.open("GET","/cgi-bin/stream_stop.py", true);
        xhrobj.onreadystatechange = function(){
            console.log(xhrobj.responseText);
        };
        xhrobj.send();
    }
    </script>
    
[/code]


CC BY-SA 4.0
2019-09-01T03:59:57.273
57746
2019-09-01T07:54:45.660
2019-09-01T07:54:45.660
15090
15090
question
javascript ajax
AjaxのJavaScriptが動きません