簡體   English   中英

在新標簽頁中打開ajax鏈接

[英]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 ,這將導致當前頁面更新。 請求數據創建一個在此概念之外的中斷的新選項卡, 這要求您發出第二個請求以實際顯示選項卡

要么選擇:

  1. 使用AJAX在當前選項卡中顯示的數據,...

  2. 或者根本沒有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM