0

2つの数字を追加する単純なajaxページがあります。

IEで実行すると、非同期コールバックが機能します。

Firefoxで実行すると、機能しません。

Firebugで正しい戻り値を取得しましたが、FirefoxではlblSumが空白のままです。

これは、btnAddクリックハンドラーの最後にfalseが返されることと関係があります。

Javascriptが無効になっている場合に備えて、サーバー側のハンドラーがあるため、Javascriptにfalseを追加します。

<script type="text/javascript">
    var pageWebForm1 = {
        txt1: document.getElementById('TextBox1'),
        txt2: document.getElementById('TextBox2'),
        lblSum: document.getElementById('LblSum'),
        btnAdd: document.getElementById('BtnAdd'),
        init: function() {
            this.btnAdd.onclick = function() {
                var xhr = new XMLHttpRequest();
                xhr.onreadystatechange = function() {
                    if (xhr.readyState == 4 && xhr.status == 200) {
                        xhrCallback(xhr.responseText);
                    }
                }
                xhr.open("POST", "Handler.ashx", true);
                xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                xhr.send("x=" + pageWebForm1.txt1.value + "&" + "y=" + pageWebForm1.txt2.value);
                return false;
            }
        }
    }
    pageWebForm1.init();

    function xhrCallback(retval) {
        pageWebForm1.lblSum.innerText = retval;
    }
</script>
4

1 に答える 1

1

これは、returnfalseステートメントとは何の関係もありません。あなたの問題はinnerTextがIEのみであるということです。クロスブラウザソリューションに関する別のstackoverflow投稿。

于 2012-10-10T20:31:29.470 に答える