[英]Browser won't set cookie from an onclick event
我正在用這個蟲子把頭發拉出來,盡管我確信這是顯而易見的。 如果是,請道歉。
以下 javascript 成功設置了我的 cookie:
<script type="text/javascript">
$(document).ready(function(){
$.post('../setCookie.php',{'region':'test'});
});
</script>
但是一旦我將相同的代碼綁定到onclick
事件,就像這樣......
<script type="text/javascript">
$(document).ready(function(){
$("#us a").click(function(){
$.post('../setCookie.php',{'region':'en-us'});
});
$("#uk a").click(function(){
$.post('../setCookie.php',{'region':'en-gb'});
});
});
</script>
<ul>
<li id="uk"><a href="http://www.example.com/uk">
<span>Enter UK site</span></a></li>
<li id="us"><a href="http://www.example.com/us">
<span>Enter US site</span></a></li>
</ul>
..它不再設置cookie! 即使相同的代碼以完全相同的方式被稱為執行(我逐步完成它,並看到它應該是的一切)。
重復:javascript 開火良好。 我正在逐步完成 setCookie.php 並且一切都一樣......除了最后沒有cookie。
這是怎么回事? 我猜是瀏覽器安全還是什么?
對於任何有興趣的人,這是我解決它的方法:
<script type="text/javascript">
$(document).ready(function(){
$("#us a").click(function(e){
e.preventDefault();
$.post('../setCookie.php',{'region':'en-us'},
function() {
window.location = "http://www.example.com/us";
}
);
});
$("#uk a").click(function(e){
e.preventDefault();
$.post('../setCookie.php',{'region':'en-gb'},
function() {
window.location = "http://www.example.com/uk";
}
);
});
});
</script>
我沒有看到任何阻止正常鏈接點擊的東西? 如果您沒有什么可以阻止正常a href
到 go 的通過,那么在頁面更改之前將沒有任何時間來執行$.post
請求。
嘗試以下操作:
$(document).ready(function(){
$('a').click(function(e){
e.preventDefault();
$.post('../setCookie.php',{'region':'test'});
});
});
它將停止頁面更改鏈接,但至少應該通過 cookie。 現在,如果您希望頁面也被加載,那么在請求中添加一個 onComplete 方法,這樣一旦成功發送了 cookie 數據,您就可以繼續頁面更改。
將此代碼放在 < script > 標簽所在的位置:(我假設 < head >)
$(document).ready(function(){
$("#us a").click(function(){
$.post('../setCookie.php',{'region':'en-us'});
});
$("#uk a").click(function(){
$.post('../setCookie.php',{'region':'en-gb'});
});
});
如果這是一個安全問題,您將在控制台上看到一個錯誤(firebug\webkit\IE 開發工具)
我想在這種情況下我會做的是改變點擊事件並將其放在這里:
<script type="text/javascript">
$(document).ready(function(){
$("#someid > li").click(function(){
$.post('../setCookie.php',{'region':$(this).attr("id")});
});
});
</script>
接着..:
<ul id="someID">
<li id="uk"><a href="http://www.example.com/uk">
<span>Enter UK site</span></a></li>
<li id="us"><a href="www.example.com/us">
<span>Enter US site</span></a></li>
</ul>
我建議不要在 HTML 中使用 JavaScript \ jQuery,只需使用 document.ready() 並綁定您的事件(如果您使用 HTML)
很可能是因為它試圖在創建之前訪問 jQuery ( $
)。 最好使用您的第一個示例中的document.ready
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.