¿Cómo obtener un singleton de JavaScript para devolver datos a través de $ .post?

Me gustaría crear un método en singleton dp.DatapodManager para que cargue los datos una vez a través de $ .post, luego puedo usar esos datos llamando métodos en el singleton.

La salida del siguiente código es:

111

222
test data

¿Qué tengo que hacer para obtener dp.DatapodManager.loadDirectly (); para agregar el contenido del archivo de texto a 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
OK, paso una función como un parámetro de devolución de llamada y estoy teniendo la función de llenar div # contenido (código cambiado arriba) pero todavía me da el mismo resultado.
agregado el autor Edward Tanguay, fuente
Bien, eliminé var text ahora. La primera parte que no funciona es que se está ejecutando la segunda devolución de llamada (

esto se devuelve

) pero no la primera devolución de llamada ( html ) , ¿cómo puedo obtener loadDirectly para devolver el valor html que obtiene de dp.qsys.loadDataFromExternalWebsite . El segundo problema es el ERROR 200 que recibo en mi POST, la url es válida y devuelve texto.
agregado el autor Edward Tanguay, fuente
Gracias @ scr4ve, al pegar la URL de firefox a chrome noté que estaba accediendo al archivo .htm a través de file: /// C: /xampp/apache/webs/testjq222/testloadlocal/index.h‌ tm Cuando accedo a través de http: //localhost/webs/testjq222/testloadlocal/index.htm , entonces funciona.
agregado el autor Edward Tanguay, fuente
Eso es realmente extraño. He pegado su código y probado en mi servidor local: la única diferencia es que el archivo cargado por $ .post ahora es solo un archivo de texto simple. Todo funcionó: el contenido de ese archivo fue procesado y anexado a div.
agregado el autor raina77ow, fuente
Ah, el tema temido del archivo://entre dominios. ) Malditos a todos. )
agregado el autor raina77ow, fuente
No puedes. En su lugar, pase una función como ese parámetro de "devolución de llamada" y haga que esa función haga el trabajo según corresponda.
agregado el autor Pointy, fuente
¿Podrías abrirlo en la vista de red de herramientas de desarrollo de Chrome? Parece que la respuesta no es válida.
agregado el autor Maximilian Hils, fuente

No hay respuestas

0
JavaScript - Comunidad española
JavaScript - Comunidad española
4 de los participantes

Enlace para invitaciones: https://t.me/joinchat/B2gdShb3y7ojLekmhtDxIw En este grupo hablamos de JavaScript. Partner: es.switch-case.com