2014-10-30 94 views
0

我正在使用WooCommerce建設網上商店。我製作了兩個開關按鈕,您可以使用它們更改視圖。無論是「列表視圖」還是「網格視圖」。我使用這個功能來觸發Ajax調用(此代碼只是列表視圖按鈕):無法通過AJAX加載PHP文件中的PHP

$('#view-list').on('click',function(){ 
    var which_view = $(this).val(); 
    $.ajax({ 
     type: 'post', 
     url: 'view-list.php', 
     data: {which_view : which_view}, 
     success: function(res){ 
      $("#ajaxtest").html(null); 
      $("#ajaxtest").html(res); // res = your new view... 
     } 
    }); 
}); 

「視圖list.php的」看起來是這樣的:

<div id="ajaxtest"> 
    TESTING LIST VIEW TRIGGER 

    <?php if (have_posts()) : ?> 

     <?php woocommerce_product_loop_start(); ?> 

      <?php woocommerce_product_subcategories(); ?> 

      <?php while (have_posts()) : the_post(); ?> 

       <?php wc_get_template_part('content', 'product'); ?> 

      <?php endwhile; // end of the loop. ?> 

     <?php woocommerce_product_loop_end(); ?> 

     <?php 
      /** 
      * woocommerce_after_shop_loop hook 
      * 
      * @hooked woocommerce_pagination - 10 
      */ 
      do_action('woocommerce_after_shop_loop'); 
     ?> 

    <?php elseif (! woocommerce_product_subcategories(array('before' => woocommerce_product_loop_start(false), 'after' => woocommerce_product_loop_end(false)))) : ?> 

     <?php wc_get_template('loop/no-products-found.php'); ?> 

    <?php endif; ?> 
</div> 

阿賈克斯功能工作。如在,它加載新文件'view-list.php'。但是,它不會比這更進一步。它不處理文件的其餘部分。這可能是因爲瀏覽器在加載後無法處理php函數,不是嗎?

我還能如何做這項工作?

回答

0

瀏覽器不處理php,在正常情況下他們可以隨時通過ajax加載內容。您可以輕鬆地追溯哪裏出了問題,但這裏的一些提示:

  1. 確保事件處理(.click())元素之後調用ISAL添加($(document).ready()
  2. which_view變量似乎不在服務器上使用側,但如果是這樣,檢查(console.log())它的值($(this).val()),如果它實際上是正確的
  3. 此外,檢查URL 'view-list.php'確實可從當前路徑
  4. 相對URL此時你最可能有答案,但是如果還是不好的話,你可以隨時檢查返回值(res)是否確實存在,如果沒有,你可以開始調試你的php代碼。