2015-10-15 65 views
0

我目前正在建立一個CMS。我想在重定向時將頁面標識或站點標識發送到下一頁。我試圖使用jQuery POST功能做:重定向之前發佈變量?

$(document).ready(function(){ 
    $('.sender').on('click','a',function(){ 
        var url = $(this).attr('href'); 
        var n = url.indexOf('#')+1; 
        var siteid = url.substr(n,url.length); 

        $.ajax({ 
         url: 'pages.php', 
         type: 'POST', 
         data: { siteid:siteid }, 
         success: function(response){ 
           console.log('check'); 
         }, 
         error: function(){ 
           console.log('error'); 
         } 
        }); 
       }); 
}); 

但由於該請求被同時用作重定向發送,這似乎並不工作。

因爲我使用apache rewrite_engine重定向的東西,我不能使用GET。

除了session_variables,我有什麼選擇? 我想保持它的安全,所以我不想讓很多信息可見/可用!

回答

0

要達到此目的,您需要等待AJAX​​請求完成,然後頁面纔會被重定向。試試這個:

$(document).ready(function(){ 
    $('.sender').on('click', 'a', function(e){ 
     e.preventDefault(); // stop the default redirect 
     var url = $(this).attr('href'); 
     var n = url.indexOf('#') + 1; 
     var siteid = url.substr(n, url.length); 

     $.ajax({ 
      url: 'pages.php', 
      type: 'POST', 
      data: { 
       siteid: siteid 
      }, 
      success: function(response){ 
       console.log('check'); 
       window.location.assign(url); // redirect once the AJAX has successfully completed 
      }, 
      error: function(){ 
       console.log('error'); 
      } 
     }); 
    }); 
}); 
0

我不確定要清楚地理解爲什麼你需要,但我認爲這可以回答你的問題。

如果您需要的是使用真正的POST方法傳輸信息,只需創建一個帶有method="POST"的隱藏表單並將其填充到click事件。

<script type="text/javascript"> 
$(document).ready(function(){ 
    $('.sender').on('click','a',function(event){ 
     event.preventDefault(); 

     var url = $(this).attr('href'); 
     var n = url.indexOf('#')+1; 
     var siteid = url.substr(n,url.length); 

     $('input[name="siteid"]').val(siteid); 
     $('#redirectForm').submit(); 
    }); 
}); 
</script> 

<form id="redirectForm" action="pages.php" method="POST"> 
    <input type="hidden" name="siteid" value=""/> 
</form>