2012-05-30 49 views
0

我有一個WordPress站點,至極是崗位的基礎上,但我想我的過濾後阿賈克斯。加載內容與阿賈克斯

棘手的部分是,如果我從想過濾器可以說,「案件」到「攝影」我對這個兩個不同的模板。

我可以一點點的PHP管理這一點,並改變the_template_part。 但是,這使得頁面重新加載,我不想做。

我一直試圖做一個Ajax請求完成過濾功能。

我的.js

$('a[rel="filter"]').click(function() { 

     var filter = $(this).attr('id'); 

     $('.checked').removeClass('checked'); 
     $(this).parent().addClass('checked'); 

     $.ajax({ 
      url: '/wp-admin/admin-ajax.php', 
      data: window.location = '#?filter=' + filter, 
      success: function() { 
       $('#content').children().fadeOut(549); 
       $('#content').html(data).fadeIn(549); 
      } 
     }); 

     console.log('Filter ' + $(this).attr('id') + ' clicked'); 
    }); 

這是改變template_part在我的index.php

$type = ($_GET['filter'] == '') ? 'projects' : $_GET['filter']; 
    <?php 
     get_template_part($type); 
    ?> 

能否實現這一目標還是做我需要考慮這在PHP?

這只是返回實際ADRESS以純文本

$('a[rel="filter"]').click(function() { 

     var filter = $(this).attr('href'); 

     $('.checked').removeClass('checked'); 
     $(this).parent().addClass('checked'); 

     $.ajax({ 
      url: 'wp-admin/admin-ajax.php', 
      //url: 'url' + filter, 
      data: { 
       filter: filter 
      }, 
      success: function(html) { 
       $('#content').children().fadeOut(549); 
       $('#content').html(filter).fadeIn(549); 
       console.log(filter); 
       console.log("Success"); 
      }, 
      error: function() { 
       console.log('No can do') 
      } 
     }); 

     console.log('Filter ' + filter + ' clicked'); 
     return false; 
    }); 

如果我有3頁不同querys和模板至極代表(案例,攝影和運動),至極的我要讓過濾的頭版。我正在一個網頁上工作。

希望這可以幫助。

+0

東西肯定是看着你的'數據有點奇怪:window.location的= '?#過濾器=' + filter'線。首先,這是您發送的數據,即整個字符串。其次,在那裏做什麼「=」?你更希望用'data:{page:'blah',filter:filter}'替換它。第三,看起來你沒有在你的成功回調中提供「數據」變量。 '成功:函數(數據){'是正確的。 – h2ooooooo

+0

我應該補充說,你的頁面重新加載的主要原因可能是由於一個JavaScript錯誤 - 嘗試檢查你的JavaScript控制檯的錯誤。 – h2ooooooo

+0

嗯...試過了,不幸的是,這不工作 – Jonas

回答

1

在點擊函數結束處添加返回false。