2014-10-30 93 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代码。