使用Jquery将带有POST的变量传递到另一个页面
我对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文件中
Link
这个答案只是为了快速修复
为什么你只是在这里传递查询字符串
window.location = "LinkTagOut.aspx?variabletopass=test";
来自jquery站点的代码
Trigger the handler $('#target').submit(function() { $ .post('ajax/test.html', function(data) { }); return false; });
$.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文档 ( data
选项):
要发送到服务器的数据。 如果不是字符串,它将转换为查询字符串。 它附加到GET请求的URL。 请参阅processData选项以防止此自动处理。 对象必须是键/值对。 如果value是一个数组,jQuery会根据传统设置的值使用相同的键序列化多个值(如下所述)。
此外,请确保从提交处理程序的末尾(或激活ajax调用的任何内容) return false
,以确保不会发生“正常”重定向。
请查看此文档页面上的“数据”选项: http : //api.jquery.com/jQuery.ajax/
你的问题是你试图传递一个json字符串(它传递一个字符串是有效的),但如果你传递一个字符串,jQuery期望一个参数化的查询字符串。 如果要传递json对象,则它不应该是字符串。
但是,请注意,通过这种方式传递的json对象将通过jQuery转换为参数化查询字符串,因此如果它不是不方便(在这种情况下,您只有一个值),您可能只是以这种方式传递给它开始使用并保存脚本一些工作。
如果你想减少编码,请执行以下操作:
- 在javascript(js)文件夹中包含jquery.redirect.min.js 。
-
加载文件AFTER JQUERY加载脚本:
-
只需在您的javascript代码中替换下一行(复制/粘贴)上的所需参数:
$().redirect('targeturl.html', {'post_var_1': 'value1', 'post_var_2': 'value2'});
这是我发现的最简单,最快速的方法,可以在不使用表单标记的情况下将变量发布到另一个页面。 祝好运!