2013-01-16 76 views
0

根據鏈接名稱,我想處理數據並在php腳本處理後檢索一個值。除了我相信,只要我可以用chrome檢查,ajax函數就不會被取消。調用ajax並將href值傳遞給php腳本

我可以做這樣的事情:

HTML

<a href="test0" class="link">click 0</a> 
<a href="test1" class="link">click 1</a> 

JS腳本:

$(".link").live('click', function(){ 
     $.ajax({ 
      type: 'POST', 
      url: '/ajax/file.php', 
      data: { 
       link : $(this).attr('href'), 
      },error: function(xhr, error){ 
       console.debug(xhr); console.debug(error); 
      },success: function(data){ 
       alert(data); 
      } 
     }); 
}); 

DevTools Screenshot

非常感謝。

UPDATE:

的原因,我已經做了,這是從網絡服務器acoording用戶選擇獲取數據(文件),但我知道這不可能使用這種技術來實現。最好的方法是使用<a href="/download.php?file=myfile&token=asdasdlkjsd" page="_blank">file</a>

然後從服務器端,我們必須使用標題和正確的MIME類型。

如果可以通過AJAX來傳輸文件,並讓用戶決定是否打開,保存或關閉它,然後我想知道如何:)

+1

不應該是'$(「。link」)'?注意'slink'中的''' – Alexander

+0

我的錯誤對不起,無論如何它不工作請求正在被取消,因爲我之前說過 – obinoob

+2

「ajax函數沒有被取消」是什麼意思? – Jack

回答

0

live()已過時,使用on()。另外,您需要防止默認的瀏覽器行爲[即在你的事件處理程序中使用event.preventDefault()

$(document).on('click', '.link', function(event){ 

    event.preventDefault(); 

    $.ajax({ 
      type: 'POST', 
      url: '/ajax/file.php', 
      data: { 
       link : $(this).attr('href'), 
      }, 
      success: function(data){ 
       alert(data); 
      } 
     }); 

}); 

編輯:對不起,固定。

+0

注:此代碼* *不等同於OP的代碼。 '.live'創建委託事件,但事實並非如此。 –

+0

你可能想指出'on'不只是'live'的精確副本。你在這裏使用'on'的方式不會產生相同的功能。你必須委託它。 –

+0

那麼最好的選擇是什麼? – obinoob