使用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转换为参数化查询字符串,因此如果它不是不方便(在这种情况下,您只有一个值),您可能只是以这种方式传递给它开始使用并保存脚本一些工作。

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

  1. 在javascript(js)文件夹中包含jquery.redirect.min.js 。
  2. 加载文件AFTER JQUERY加载脚本:

       
  3. 只需在您的javascript代码中替换下一行(复制/粘贴)上的所需参数:

     $().redirect('targeturl.html', {'post_var_1': 'value1', 'post_var_2': 'value2'}); 

这是我发现的最简单,最快速的方法,可以在不使用表单标记的情况下将变量发布到另一个页面。 祝好运!