在Firefox中循环AJAX请求时出错

时间:2011-02-07 13:22:23

标签: javascript ajax

我正在尝试创建一个连接到服务器的Javascript,接收响应,然后再次自动连接。

<head>
    <title>tests</title>

    <script type="text/javascript" src="/javascripts/jquery.min.js"></script>
    <script type="text/javascript">
        function requestData() {
            var oRequest = new XMLHttpRequest();

            oRequest.onreadystatechange = handleData;

            oRequest.open( 'GET', '/test.php', true );
            oRequest.send( null );
        }

        function handleData() {
            if( this.readyState == 4 ) {
                document.write( this.responseText );
                requestData();
            }
        }

        $(function(){

            requestData();

        });         
    </script>

</head>

<body>
</body>

上面的代码在chrome中工作正常,但在两次请求后,脚本在Firefox中失败并出现以下错误...

requestData未定义

有谁知道为什么会这样?服务器此刻只响应一位数字。 (PS我知道这在IE中不起作用,那很好)

由于

2 个答案:

答案 0 :(得分:1)

我假设有两个请求只要Firefox完成处理文档并关闭它。这意味着当再次调用document.write时,它会自动调用document.open并删除现有文档,包括脚本,以便删除该函数。

使用DOM manipulation代替document.write

答案 1 :(得分:-1)

如果你使用jquery,你应该使用$ .ajax或类似的东西。它更容易使用而且有效。

http://api.jquery.com/jQuery.ajax/

$.ajax({
    url: 'http://my_url', 
    success: function (data) {
        $.ajax({
            url: 'http://my_url_2', 
            success: function (data) {
                alert(data);
            }
        })
    }
})