Javascript 如何使用JQuery将数据从一个HTML页面传递到另一个HTML页面?

Javascript 如何使用JQuery将数据从一个HTML页面传递到另一个HTML页面?,javascript,jquery,ajax,json,jquery-mobile,Javascript,Jquery,Ajax,Json,Jquery Mobile,我有两个HTML页面,它们以父子关系的方式工作: 第一个按钮有两个功能:首先,它通过AJAX调用从数据库请求数据。第二,它将用户引导到下一个包含请求数据的页面,这些数据将由JavaScript处理以填充第二个页面 我已经可以通过ajax调用获取数据并将其放入JSON数组中: $.ajax({ type: "POST", url: get_data_from_database_url, async:false, data: params, success:

我有两个HTML页面,它们以父子关系的方式工作:

第一个按钮有两个功能:首先,它通过AJAX调用从数据库请求数据。第二,它将用户引导到下一个包含请求数据的页面,这些数据将由JavaScript处理以填充第二个页面

我已经可以通过ajax调用获取数据并将其放入JSON数组中:

$.ajax({
    type: "POST",
    url: get_data_from_database_url,
    async:false,
    data: params,
    success: function(json)
    {
        json_send_my_data(json);
    }
});

function json_send_my_data(json)
{
    //pass the json object to the other page and load it
}
我假设在第二个页面上,一个“document ready”JavaScript函数可以轻松地处理对传递的JSON对象和所有数据的捕获。测试它是否有效的最好方法是使用
alert(“我的数据:+json.My_data.first_name”)
在documentready函数中查看JSON对象是否已正确传递


我只是不知道一个可信的真正的方法来做这件事。我已经阅读了论坛,了解了使用
window.location.url
加载第二页的基本知识,但传递数据完全是另一回事。

会话cookie可能会解决您的问题

在第二页上,您可以使用服务器脚本标记或site document.cookie直接在cookie中打印

在下一节中,再次将Cookies转换为Json


怎么样?

会话cookie可以解决您的问题

在第二页上,您可以使用服务器脚本标记或site document.cookie直接在cookie中打印

在下一节中,再次将Cookies转换为Json


怎么样?

我想你有两个选择

1) 使用cookies-但它们有大小限制

2) 使用


下一个最安全、可靠和可行的方法是使用服务器端代码。

我认为您有两种选择

1) 使用cookies-但它们有大小限制

2) 使用


下一个最安全、可靠和可行的方法是使用服务器端代码。

免责声明:这很糟糕,但下面是:

首先,您需要这个函数(我不久前编写了这个函数)。详情如下:

它将请求参数转换为json表示

function getParameterMap () {
    if (window.location.href.indexOf('?') === (-1)) {
        return {};
    }
    var qparts = window.location.href.split('?')[1].split('&'),
        qmap   = {};
    qparts.map(function (part) {
        var kvPair = part.split('='),
            key    = decodeURIComponent(kvPair[0]),
            value  = kvPair[1];

        //handle params that lack a value: e.g. &delayed=
        qmap[key] = (!value) ? '' : decodeURIComponent(value);
    });
    return qmap;
}
接下来,在成功处理程序函数中:

success: function(json) {
    //please really convert the server response to a json
    //I don't see you instructing jQuery to do that yet!
    //handleAs: 'json'

    var qstring = '?';
    for(key in json) {
        qstring += '&' + key + '=' + json[key];
        qstring = qstring.substr(1); //removing the first redundant &
    }
    var urlTarget = 'abc.html';
    var urlTargetWithParams = urlTarget + qstring;

    //will go to abc.html?key1=value1&key2=value2&key2=value2...
    window.location.href = urlTargetWithParams;
}
在下一页中,调用getParameterMap

var jsonRebuilt = getParameterMap();
//use jsonRebuilt 

希望这能有所帮助(这里有一些额外的陈述可以让事情变得非常明显)。(请记住,正如人们指出的那样,这很可能是一种错误的做法)。

免责声明:这很糟糕,但下面是:

首先,您需要这个函数(我不久前编写了这个函数)。详情如下:

它将请求参数转换为json表示

function getParameterMap () {
    if (window.location.href.indexOf('?') === (-1)) {
        return {};
    }
    var qparts = window.location.href.split('?')[1].split('&'),
        qmap   = {};
    qparts.map(function (part) {
        var kvPair = part.split('='),
            key    = decodeURIComponent(kvPair[0]),
            value  = kvPair[1];

        //handle params that lack a value: e.g. &delayed=
        qmap[key] = (!value) ? '' : decodeURIComponent(value);
    });
    return qmap;
}
接下来,在成功处理程序函数中:

success: function(json) {
    //please really convert the server response to a json
    //I don't see you instructing jQuery to do that yet!
    //handleAs: 'json'

    var qstring = '?';
    for(key in json) {
        qstring += '&' + key + '=' + json[key];
        qstring = qstring.substr(1); //removing the first redundant &
    }
    var urlTarget = 'abc.html';
    var urlTargetWithParams = urlTarget + qstring;

    //will go to abc.html?key1=value1&key2=value2&key2=value2...
    window.location.href = urlTargetWithParams;
}
在下一页中,调用getParameterMap

var jsonRebuilt = getParameterMap();
//use jsonRebuilt 

希望这能有所帮助(这里有一些额外的陈述可以让事情变得非常明显)。(请记住,正如人们指出的那样,这很可能是一种错误的做法)。

这是我关于两个html页面之间通信的帖子,它是纯javascript,使用cookies:

您可以重用那里的代码将消息从一个页面发送到另一个页面


代码使用轮询来获取数据,您可以根据需要设置轮询时间。

以下是我关于两个html页面之间通信的帖子,它是纯javascript,使用cookies:

您可以重用那里的代码将消息从一个页面发送到另一个页面


代码使用轮询来获取数据,您可以根据需要设置轮询时间。

警告:这只适用于单页模板,其中每个伪页都有自己的HTML文档

您可以手动使用
$.mobile.changePage()
函数在页面之间传递数据,而不是让jQuery mobile为您的链接调用它:

$(document).delegate('.ui-page', 'pageinit', function () {
    $(this).find('a').bind('click', function () {
        $.mobile.changePage(this.href, {
            reloadPage : true,
            type       : 'post',
            data       : { myKey : 'myVal' }
        });
        return false;
    });
});
以下是这方面的文档:


您也可以简单地将数据存储在下一页的变量中。这是可能的,因为jQuery移动页面存在于同一个DOM中,因为它们是通过AJAX引入DOM的。这是我不久前发布的一个答案:

警告:这只适用于单页模板,其中每个伪页面都有自己的HTML文档

您可以手动使用
$.mobile.changePage()
函数在页面之间传递数据,而不是让jQuery mobile为您的链接调用它:

$(document).delegate('.ui-page', 'pageinit', function () {
    $(this).find('a').bind('click', function () {
        $.mobile.changePage(this.href, {
            reloadPage : true,
            type       : 'post',
            data       : { myKey : 'myVal' }
        });
        return false;
    });
});
以下是这方面的文档:


您也可以简单地将数据存储在下一页的变量中。这是可能的,因为jQuery移动页面存在于同一个DOM中,因为它们是通过AJAX引入DOM的。我不久前发布了一个关于这个问题的答案:

是否可以提供JSFIDLE?您应该做的是将要加载的数据的地址发送到下一页,而不是数据本身。您首先通过ajax加载数据,然后希望将其发送到下一页。为什么不将
get\u game\u wall\u url
发送到下一页,让它在那里加载数据?没有理由在不需要的时候抛出大量数据。您需要将json变量反序列化为传统的请求参数,构造查询字符串,将其附加到重定向url,然后在新页面中,使用Javascript读回请求参数以解析url。但这是一个糟糕的设计。在jQuery移动网站中通常不使用
document.ready
,因为当页面通过AJAX进入DOM时,它不会触发。阅读本页文档,黄色大警告…:是否可以提供JSFIDLE?您应该做的是将要加载的数据的地址发送到下一页,而不是数据本身。您首先通过ajax加载数据,然后希望将其发送到下一页。为什么不将
get\u game\u wall\u url
发送到下一页,让它在那里加载数据?没有理由在不必要的时候抛出大量数据。您需要将json变量反序列化为传统的请求参数,构造查询字符串,将其附加到