我对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>
答案 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 documentation(data
选项):
要发送到服务器的数据。它被转换为查询 字符串,如果还不是字符串。它的 附加到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)
如果你想减少编码,请执行以下操作:
在JQUERY加载脚本后加载文件:
<script type='text/javascript' src='jquery.js'>
</script>
<script type='text/javascript' src='jquery.redirect.min.js'>
</script>
只需在javascript代码的下一行(复制/粘贴)中替换所需的参数:
$().redirect('targeturl.html', {'post_var_1': 'value1', 'post_var_2': 'value2'});
这是我发现的最简单,最快速的方法,可以在不使用表单标记的情况下将变量发布到另一个页面。祝你好运!