在JQuery Mobile pageshow()事件上访问JSON数据

在JQuery Mobile pageshow()事件上访问JSON数据,jquery,json,jquery-mobile,initialization,undefined,Jquery,Json,Jquery Mobile,Initialization,Undefined,我正在一个单页JQuery移动网站上工作。当加载JSON数据并在客户端操作DOM时,JQuery初始化最初设置为false。加载内容并操作DOM后,JQuery Mobile将初始化 一旦初始化,我计划使用Ben Alman的replaceText插件将JSON放入输出HTML中的一些占位符中,这样像“XXFIRST_NAMEXX”这样的占位符就变成了“John Smith” 我还没有找到替换部分b/c,我无法从JQuery Mobile的pageshow()事件中访问JSON数据,即使是加载页

我正在一个单页JQuery移动网站上工作。当加载JSON数据并在客户端操作DOM时,JQuery初始化最初设置为false。加载内容并操作DOM后,JQuery Mobile将初始化

一旦初始化,我计划使用Ben Alman的replaceText插件将JSON放入输出HTML中的一些占位符中,这样像“XXFIRST_NAMEXX”这样的占位符就变成了“John Smith”

我还没有找到替换部分b/c,我无法从JQuery Mobile的pageshow()事件中访问JSON数据,即使是加载页面的事件序列中最后触发的事件

下面是我的代码的简化和注释版本。 我正在使用JQuery 1.7.1和JQuery Mobile 1.1.0 我错过了什么? 谢谢


我不完全确定发生了什么,但您是否希望传递到“pageshow”回调中的“data”参数与“getJSON”回调中的“data”变量相同?它们是不同的对象,恰好两者都被命名为“数据”。“pageShow”中的一个只有一个“prevPage”属性,该属性包含对DOM元素的引用,该元素表示刚刚导航离开的页面。getJSON回调中的一个包含您从数据源获得的实际数据;一旦回调完成执行,它就消失了

如果无法在JSON回调中完成所有这些初始化,那么可以尝试使用jQuery的data()函数将所需的JSON位存储在页面中的某个DOM元素上


这有帮助吗?

我在处理
data()
时遇到了困难,甚至
jqmData()
都应该用它来代替
data()
。从文档中:

在使用jQuery Mobile时,应使用jqmData和jqmRemoveData 用于代替jQuery核心的数据和removeData方法(注意 这包括$.fn.data、$.fn.removeData和$.data, $.removeData和$.hasData实用程序),因为它们会自动 合并名称空间数据属性的获取和设置(即使 当前未使用任何命名空间)


为了克服这个问题,我将数据存储在getJSON回调中的LocalStorage中,然后可以从pageShow访问它。。。有意思,我不知道。不知何故,我错过了上一个项目的成功机会!:)这可能是一个相对较新的添加,我使用该框架的时间不长。但前几天我遇到了这个问题……是的,这确实有帮助!我不认为数据是两种不同的东西——一种是getJSON,另一种是pageShow。一旦我全局声明了dropin变量,并在getContent()中定义了它们,pageShow就有了它所需要的操作。非常感谢!
// jQuery Mobile initialization
$(document).bind("mobileinit", function () {
    //prevent JQM from initializing until after content has been loaded in .getJSON callback;
    $.mobile.autoInitializePage = false;
});

$( document ).bind( "pageshow", function( event, data ){
    console.log('pageshow fires'); //fires 4th

    //DROP-INS
    //need to replace text within manipulated and initialized html
    var resplaceScope, strDisplayName, strSchoolName, strOfferTitle; 
    replaceScope = $('body *');
    //collect variables from json data
    strOfferTitle = data.content.offer_vars.offer_title; //ERROR Uncaught TypeError: Cannot read property 'offer_vars' of undefined 
    replaceScope.replaceText( /XXOFFER_TITLEXX/gi, strOfferTitle );
});

$(document).ready(function(){

    console.log('document.ready fires'); //fires 1st

    $.getJSON('io_content.json', function(data) {
        console.log('getJSON fires'); //fires 2st
        getContent(data);
        // ... once code is manipulated by getContent, Jquery is ready to initialize
        $.mobile.initializePage();
    });

    function getContent(data){
        console.log('getContent fires'); //fires 3rd
        // ... code to manipulate content client side before jquery mobile initializes
    }

});