【问题标题】:xmlHttpRequest readyState stuck at 1xmlHttpRequest readyState 停留在 1
【发布时间】:2015-08-10 00:32:08
【问题描述】:

我有一个简单的 ajax 代码(我试图在更新我的网站之前检查 xml 文件是否已更改)但由于某种原因,readystate 卡在 1 并且 onReadyStateChanged 事件处理程序没有触发。

这是我的 javascript

 window.setInterval(updateCount, 1000);
    var xmlhttp = init();

    function updateCount() {
        i = document.getElementById("updater")
        if (i.value != "") {
            if (xmlhttp.readyState == 4 || xmlhttp.readyState == 0) {
                xmlhttp.onreadystatechange = update_chacker;
                xmlhttp.open("GET", i.value, true);
                xmlhttp.send;
            }
        }
    }

    function init() {
            if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
                return new XMLHttpRequest();
            }
            else {// code for IE6, IE5
                return new ActiveXObject("Microsoft.XMLHTTP");
            }
        }

    function update_chacker() {

        var txt, x, xx, i;
        console.log("readystate = " + xmlhttp.readyState);
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            xx = document.getElementById("MessagesBulletedList");
            x = xmlhttp.responseXML.documentElement.getElementsByTagName("Message");
            if (x.length > xx.getElementByTagName('li').length) {
                var clickButton = document.getElementById("updater");
                clickButton.click();
            }
        }
    }

HTML(不太重要,但如果您想了解这里的参考资料,那就是)

<form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" />
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" width="300px" UpdateMode="Always" OnLoad="UpdatePanel1_Load" ViewStateMode="Enabled">
        <ContentTemplate>
            <asp:PlaceHolder ID="ph" runat="server"></asp:PlaceHolder>

            <br />
            <asp:Label ID="chatterLbl" runat="server" />
            <br />
            <div id="ChatText" style="width: 640px; height: 240px; overflow: auto;">
                <asp:BulletedList ID="MessagesBulletedList" runat="server" />
            </div>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="SendButton" EventName="Click" />
            <asp:AsyncPostBackTrigger ControlID="updater" EventName="Click" />
        </Triggers>
    </asp:UpdatePanel>


    <div hidden="hidden"> <asp:Button ID="updater" runat="server" Text="" /> </div>
    <br />
    <asp:UpdatePanel ID="UpdatePanelTextBox" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <asp:TextBox ID="NewMessageTextBox" Columns="50" runat="server" />
        </ContentTemplate>
    </asp:UpdatePanel>
    <asp:Button ID="SendButton" Text="Send" runat="server" OnClick="SendButton_Click" />

【问题讨论】:

    标签: javascript html asp.net ajax


    【解决方案1】:

    你永远不会调用 send

    xmlhttp.send;
    

    需要

    xmlhttp.send();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      • 1970-01-01
      相关资源
      最近更新 更多