Como obter um singleton javascript para retornar dados via $ .post?

Eu gostaria de criar um método no singleton dp.DatapodManager para que ele carregue os dados uma vez via $ .post, então eu posso usar esses dados chamando métodos no singleton.

A saída do código a seguir é:

111

222
test data

O que eu tenho que fazer para obter o dp.DatapodManager.loadDirectly (); para adicionar o conteúdo do arquivo de texto ao div # content ?

enter image description here

<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('
1111

'); $('div#content').append('
222

'); $('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('
this is returned

'); }, 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 0) { for(x=0; x'; } } return r; } }; </script> </head> <body> <div id="content"></div> </body> </html>
0
adicionado editado
Visualizações: 1
OK, eu passar uma função como um parâmetro de retorno de chamada e estou tendo a função preencher div # content (código alterado acima), mas ainda me dá a mesma saída.
adicionado o autor Edward Tanguay, fonte
Certo, eu removi var text agora. A primeira parte que não funciona é que o segundo retorno de chamada está sendo executado (

está sendo retornado

) mas não o primeiro callback ( html ) , como posso obter loadDirectly para retornar o valor html obtido de dp.qsys.loadDataFromExternalWebsite . O segundo problema é o ERRO 200 que estou recebendo no meu POST, o url é válido e retorna o texto.
adicionado o autor Edward Tanguay, fonte
Obrigado @ scr4ve, ao colar a URL do firefox para o chrome, notei que estava acessando o arquivo .htm via file: /// C: /xampp/apache/webs/testjq222/testloadlocal/index.h‌ tm . Quando eu acesso via http: //localhost/webs/testjq222/testloadlocal/index.htm , ele funciona.
adicionado o autor Edward Tanguay, fonte
Isso é muito estranho. Eu colei seu código e testei no meu localhost: a única diferença é que o arquivo carregado por $ .post é agora apenas um arquivo de texto simples. Tudo funcionou: o conteúdo desse arquivo foi processado e anexado ao div.
adicionado o autor raina77ow, fonte
Ah, o arquivo temido://problema de domínio cruzado. ) Maldito todos eles. )
adicionado o autor raina77ow, fonte
Você não pode. Em vez disso, passe uma função como esse parâmetro de "retorno de chamada" e faça com que essa função faça o trabalho conforme apropriado.
adicionado o autor Pointy, fonte
Você poderia abri-lo na exibição de rede das ferramentas de desenvolvimento do Chrome? Parece que a resposta é inválida.
adicionado o autor Maximilian Hils, fonte

Não há respostas.

0