0

我想在单例上创建一个方法,dp.DatapodManager以便它通过 $.post 加载一次数据,然后我可以通过调用单例上的方法来使用该数据。

以下代码的输出是:

111

222
test data

我必须做什么才能dp.DatapodManager.loadDirectly();将文本文件的内容添加到div#content

在此处输入图像描述

<html>
    <head>
        <title>test load</title>
        <script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                $('div#content').append('<p>1111</p>');
                $('div#content').append('<p>222</p>');
                $('div#content').append(dp.DatapodManager.getTestData());
                dp.DatapodManager.loadDirectly(function(html) {
                    $('div#content').append(html);
                });
            });

            var dp = dp || {
                VERSION : '0.00.05'
            };

            dp.DatapodManager = (function() {
                return {
                    loadDirectly: function(callback) {
                        dp.qsys.loadDataFromExternalWebsite(function(stringBlock) {
                            var lines = dp.qstr.convertStringBlockToLines(stringBlock);
                            var html = dp.qstr.appendBrToLines(lines);
                            callback(html); //never executes, cannot set breakpoint here in firebug
                        });     
                        callback('<p>this is returned</p>');
                    },
                    getTestData: function() {
                        return 'test data';
                    }
                }
            }());

            dp.qsys = {
                loadDataFromExternalWebsite : function(callback) {
                    url = 'http://localhost/webs/dpjs/data/data.txt';

                    var json = '';
                    (function() {
                        var json = null;
                        $.post(url, {}, function(jsonString) {
                            callback(jsonString);
                        });

                        return json;
                    })();
                }
            };


            dp.qstr = {
                convertStringBlockToLines: function(block, trimLines) {
                    var trimLines = trimLines || true;
                    var lines = block.split(dp.qstr.NEW_LINE());
                    if(trimLines && lines.length > 0) {
                        for(x=0; x<lines.length; x++) {
                            lines[x] = lines[x].trim(); 
                        }
                    }
                    return lines;
                },

                NEW_LINE: function() {
                    return '\r\n';
                }, 

                appendBrToLines: function(lines) {
                    var r = '';
                    if(lines.length > 0) {
                        for(x=0; x<lines.length; x++) {
                            r += lines[x] + '<br/>';
                        }
                    }
                    return r;
                }
            };


        </script>
    </head>
<body>
    <div id="content"></div>

</body>
</html>
4

0 回答 0