[英]Open ajax links in new tab
我正在構建一個面向ajax的站點,我的所有鏈接都是這樣的:
<div class="link">press me </div>
<div id="contents" ></div>
<script>
$('div[class="link"]').click(function() {
$.ajax({
url: 'contents/get_products.php',
type: "GET",
data:
dataType: 'json',
success:
function(data){
$.each(data, function(i){
$('#contents').append('<div class="cat_list_item">something</div>');
});
}
});
});
</script>
如何在新選項卡中打開這些鏈接(在中間單擊或右鍵單擊“新選項卡中的打開鏈接”)。
我知道瀏覽器只打開原始頁面(url)而沒有從Ajax調用中檢索到的數據,但是如何讓它在新選項卡中加載數據。 我一直在尋找互聯網,到目前為止我還沒有找到解決方案。
不,至少使用你的方法做到這一點幾乎是不可能的。 如果您想使用瀏覽器本身提供的新選項卡功能,則不能將div
與附加到其上的Javascript處理程序一起使用。
你可以做什么:使用帶有_blank
window.open
作為目標,但是你會遇到彈出窗口攔截器的問題,這可能不是你想要的。
您也可以使用<a class="link" href="my-ajax-view/?some=parameters">press me</a>
並撰寫一個顯示您要查找的內容的頁面(看起來最好的內容)我的解決方案,因為那時你也會為5%關閉Javascript的用戶提供功能。 您仍然可以通過單擊該鏈接在JQuery上加載一些奇特的AJAX,但如果有人在新選項卡中打開鏈接,您將重定向到收集信息的頁面。 您的新點擊處理程序將如下所示:
$('a.link').click(function(event) {
event.preventDefault();
// Your ajax request here
}
這違背了AJAX的概念,它打算消除each user action required that the page be re-loaded from the server
通過發送對單個數據的請求each user action required that the page be re-loaded from the server
,這將導致當前頁面更新。 請求數據創建一個在此概念之外的中斷的新選項卡, 這要求您發出第二個請求以實際顯示選項卡 。
要么選擇:
使用AJAX在當前選項卡中顯示的數據,...
或者根本沒有AJAX,只需打開一個請求數據的新選項卡。
不要混淆這兩者,因為它根本沒有意義。
我正在努力解決同樣的問題,我找到了非常簡單的解決方案。 它只是基本上用這樣的簡單條件檢查AJAX代碼:
if (event.which !== 2) {
// ajax code
}
這樣,只有當您不單擊鼠標中鍵時才調用AJAX,如果這樣做仍然像普通鏈接一樣,那么它會在新選項卡中打開頁面。
您可以隨時使用您的php代碼動態創建一個html頁面,並將地址返回給它,並在javascript的window.open命令中提到target =“_ blank”。
或者,使用jQuery UI創建一個新的選項卡,結果數據可以完成這項工作嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.