2010-12-03 168 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'}); 
    

這是我發現將變量發佈到另一個頁面而不使用表單標記的最簡單,最快捷的方法。祝你好運!

相關問題