如何在jquery中使用额外信息重定向?

时间:2016-07-07 16:02:49

标签: javascript jquery html redirect

我想执行重定向,但我也想发送其他信息。

我试图更改window.location.href的值,但似乎没有传递额外信息。

我也得到了我的能力

    $.get(
        new_url,
        {data : "mydata"},
        function(data) {
           alert('page content: ' + data);
        }
    );

这将显示新页面的html内容,但这对实际到达那里没有帮助。 我怎样才能做到这一点?

编辑:我觉得好像我必须严厉地说这个,因为我很确定这是一个简单/常见的任务。这不应该是需要cookie的东西 - 它应该基本上像一个帖子请求(我认为)。

3 个答案:

答案 0 :(得分:0)

您可以使用window open方法重定向您的用户,并记住使用“_self”

window.open('url','_self');

答案 1 :(得分:0)

最好将数据存储在localStorage中,然后回退到Cookie(我非常喜欢js-cookie)。

以下是存储和检索数据所需的两个辅助函数:

function setMultiPageData(itemName, data) {
    var dataStr = JSON.stringify(data);

    var hasLocalStorage = typeof localStorage !== 'undefined';
    if (hasLocalStorage) {
        localStorage.setItem(itemName, dataStr);
    }
    else {
        Cookies.set(itemName, dataStr, { path: '/' }); // path set to root to make cookie available on any page
    }
}

function getMultiPageData(itemName) {
    var data = null;

    var hasLocalStorage = typeof localStorage !== 'undefined';
    if (hasLocalStorage) {
        data = localStorage.getItem(itemName);
    }

    if (!hasLocalStorage || data === null) {
        data = Cookies.get(itemName);
    }

    var parsedObject = null;
    try {
        parsedObject = JSON.parse(data);
    }
    catch (ex) {
        console.log(ex); // remove in production
    }

    return parsedObject;
}

用法:

var data = { first: 'this is the first thing', second: 'this is the second thing' };
setMultiPageData('stackoverflow-test', data);

// go to a new page
var retrievedData = getMultiPageData('stackoverflow-test');
if (retrievedData === null) {
    console.log('something went wrong')
}
else {
    console.log(retrievedData); // { first: 'this is the first thing', second: 'this is the second thing' }
}

答案 2 :(得分:0)

你有几个不同的选择:

  • URI变量 - 您可以通过附加问号(?),后跟一组以&符号(=)分隔的键值,将额外数据附加到URL,每个变量由&符号(&)。例如,http://www.google.com/search?q=javascript+url+variables&ie=UTF-8为您提供了使用UTF-8编码搜索“javascript url变量”的Google链接。您的PHP代码或JavaScript需要处理传递和处理这些变量。如果使用JavaScript,处理URL的好库是URI.js或使用PHP,您可以使用parse_urlhttp_build_query函数。您可以将其与window.location.href一起使用;例如:window.location.href = "http://www.google.com/search?q=javascript+url+variables&ie=UTF-8"(将Google网址替换为您创建的或在变量中设置的网址。)
  • Storage API - 您可以使用localStorage或sessionStorage属性来使用JavaScript存储和检索信息(信息存储在用户的浏览器中 - 由IE 8及更新版本和所有其他主要版本支持浏览器)。请注意,这只是JavaScript,除非您使用JavaScript获取数据并通过URL变量,表单,AJAX请求等将其传递给PHP服务器。
  • Cookie - 您可以在Cookie中存储其他信息 - 但是这更加困难,因为您必须将变量设置为parsable string(可能是JSON)并记住编码/解码设置/获取cookie时的字符串。我不推荐这种方法。
  • IndexedDB API - 这是一种更高级的客户端/浏览器存储机制,目前仅在IE 10及更新版本(以及几乎所有其他浏览器)中受支持。该标准还有一些变化,这意味着新版本的浏览器可能会破坏当前的实现或者是错误的。如果您只需要简单的键值存储(而不是类似SQL的数据库),那么您应该坚持使用上述选项之一。