如何为XMLHttpRequest进行多次调用

时间:2014-07-14 11:59:59

标签: javascript html ajax xmlhttprequest

我是javascript的新手,我尝试使用XMLHttpRequest创建异步http请求。为了说明,我有以下代码:

        function launchRequest(request, callback) {
            var xhr = new XMLHttpRequest();

            xhr.open("POST", "/api", true);
            xhr.onload = function(e) {
                callback(xhr.responseText);
            }   
            xhr.send(JSON.stringify(request));
        }

        function getAlbums(callback) {
            launchRequest({
                "command" : "getfolders"
            }, callback);
        }

        function getPhotosFromAlbum(albumId, callback) {
            launchRequest({
                "command" : "getphotos",
                "arguments" : {
                    "foldername" : albumId
                }
            }, callback);
        }

        getAlbums(function(result) {
            document.write('first callback <br/>');
        });


        getAlbums(function(result) {
            document.write('second callback <br/>');
        });

所需的行为是调用两次回调函数,但观察到的行为是第一个函数被调用一次而页面停止。

我已经读过原因可能是重复使用xhr但是,如果我错了,请纠正我,初始化强制变量在函数的范围内。

1 个答案:

答案 0 :(得分:0)

在文档加载后调用document.write时,整个文档都会被覆盖,所以一切都消失了。

在异步函数的回调中调用document.write肯定会在文档最初加载之后。

将其更改为

var element = document.getElementById('result');

element.innerHTML += 'first callback <br/>';

并确保在DOM中有一个具有该ID的元素

FIDDLE

相关问题