使用Jquery将带有POST的变量传递到另一个页面

时间:2010-12-03 22:59:46

标签: jquery post redirect

我对Jquery比较陌生,我想知道如何将变量发布到另一个页面然后重定向?我使用了ajax函数,重定向工作正常,但在POST中没有捕获变量(它们是空的)

function linkWO() {

    $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "LinkTagOut.aspx",
            dataType: "json",
            data: "{id=1}",
            complete:
            function () {
                window.location = "LinkTagOut.aspx";
            }

    });
}

在我的aspx文件中

<a href="javascript:void(0);" onclick="return linkWO();"><span>Link</span></a>

4 个答案:

答案 0 :(得分:3)

$.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "LinkTagOut.aspx",
        dataType: "json",
        data: { id: 1 }, // or the string: 'id=1'
        complete:
        function () {
            window.location = "LinkTagOut.aspx";
        }

});

来自$.ajax documentationdata选项):

  

要发送到服务器的数据。它被转换为查询   字符串,如果还不是字符串。它的   附加到GET请求的URL。   请参阅processData选项以防止这种情况   自动处理。对象必须是   键/值对。如果value是一个数组,   jQuery序列化多个值   基于价值的相同密钥   传统环境(如下所述)。

此外,请确保提交处理程序末尾的return false(或激活ajax调用的任何内容)以确保不会发生“正常”重定向。

答案 1 :(得分:2)

这个答案只是为了快速修复

为什么你只是在这里传递查询字符串

window.location = "LinkTagOut.aspx?variabletopass=test"; 
来自jquery站点的

代码

<form id="target" action="destination.html">
  <input type="text" value="Hello there" />
  <input type="submit" value="Go" />
</form>
<div id="other">
  Trigger the handler
</div>

$('#target').submit(function() {
$

.post('ajax/test.html', function(data) {      
});
  return false;
});

答案 2 :(得分:0)

请查看此文档页面上的“数据”选项:http://api.jquery.com/jQuery.ajax/

您的问题是您正在尝试传递json字符串(并且传递字符串是有效的),但是如果传递字符串,则jQuery需要参数化查询字符串。如果你想传递一个json对象,它不应该是一个字符串。

但是,请注意,通过这种方式传递的json对象将通过jQuery转换为参数化查询字符串,因此如果它不是不方便(在这种情况下,只有一个值),您可能只是将它传递给它开始的方式和保存脚本的一些工作。

答案 3 :(得分:0)

如果你想减少编码,请执行以下操作:

  1. 在您的javascript(js)文件夹中加入jquery.redirect.min.js
  2. 在JQUERY加载脚本后加载文件:

    <script type='text/javascript' src='jquery.js'> 
    </script>
    
    <script type='text/javascript' src='jquery.redirect.min.js'>
    </script>
    
  3. 只需在javascript代码的下一行(复制/粘贴)中替换所需的参数:

    $().redirect('targeturl.html', {'post_var_1': 'value1', 'post_var_2': 'value2'});
    
  4. 这是我发现的最简单,最快速的方法,可以在不使用表单标记的情况下将变量发布到另一个页面。祝你好运!