2010-12-03 287 views
8

我对Jquery比较新,我想知道如何将变量发布到另一个页面然后重定向?我用AJAX功能,重定向工作正常,但没有变量在POST捕获(它们是空的)用POST将变量传递给另一个页面使用Jquery

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

gnomixa - 我可能在这里的基地,但它看起来像我可能会误解ajax调用的目的。这听起来好像你想向页面发布一些值,就好像你正在提交一个表单(而不是异步的,意味着你不会离开你的当前页面)。那是对的吗? – Ender 2010-12-03 23:43:47

+0

是的,你是对的。没有提交表单可能吗? – sarsnake 2010-12-04 00:08:06

+0

我更新了我的答案,看到我认为那就是你想要做的事 – kobe 2010-12-04 00:30:05

回答

2

这个答案仅仅是一个快速解决

为什么不你只是如果你喜欢的代码少做通作为查询字符串这里从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; 
}); 
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基于 传统设置的值(如下所述)将多个值与 相同的密钥序列化。

此外,请确保从提交处理程序(或任何引发ajax调用),以确保没有发生'正常'重定向。

+0

@ karim除了数据散列// – kobe 2010-12-03 23:02:54

0

看一看这个文档页面上的“数据”选项:http://api.jquery.com/jQuery.ajax/

你的问题是,你正在试图通过一个JSON字符串(它是有效的传递一个字符串),但如果你通过一个字符串,jQuery期待一个参数化的查询字符串。如果你想传递一个json对象,它不应该是一个字符串。

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

0

window.location = "LinkTagOut.aspx?variabletopass=test"; 

代码这个:

  1. include jquery.redirect.min.js在您的JavaScript(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'}); 
    

这是我发现将变量发布到另一个页面而不使用表单标记的最简单,最快捷的方法。祝你好运!

相关问题