Javascript 如何使用JQuery将数据从一个HTML页面传递到另一个HTML页面?
我有两个HTML页面,它们以父子关系的方式工作: 第一个按钮有两个功能:首先,它通过AJAX调用从数据库请求数据。第二,它将用户引导到下一个包含请求数据的页面,这些数据将由JavaScript处理以填充第二个页面 我已经可以通过ajax调用获取数据并将其放入JSON数组中: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:
$.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变量反序列化为传统的请求参数,构造查询字符串,将其附加到