2013-02-27 67 views
1

我想上传四个链接的一个区域中的数据,当我点击链接1时,它会加载特定区域中的数据,当我点击链接2时,它会将页面加载到第一个链接打开的同一区域,我怎样才能做到这一点?如何通过ajax更新一个区域中的数据?

<div class="container"> 
    <div class="span-5"> 
     <ul> 
      <li><?php echo $this->Manager->link('Ecommerce',array('controller'=>'associations','action'=>"view_report"),array('id'=> 'home','class'=>'nav'));?></li> 
      <li><a href="#" id="home" class="nav">Home</a></li> 
      <li><a href="#" id="about" class="nav">About</a></li> 
      <li><a href="#" id="contact" class="nav">Contact Us</a></li> 
     </ul> 
    </div> 
</div> 

,我想从电子商务的链接打开数据为int这样

<?php v_start($this);?> 

<h1><?php echo __l('View Report');?></h1> 

<div class="firsttable"> 
    <table width="100%" border="0" cellspacing="0" cellpadding="2"> 
     <thead> 
      <tr class="heading"> 
      <td><?php echo __l('Financials');?></td> 
      <td><?php echo __l('Payment Methods');?></td> 
      <td><?php echo __l('By Credit Card');?></td> 
      </tr> 
     </thead> 
     <tbody> 

      <tr> 
      <td> 
       <?php 
        echo __l("YTD \t "); 
        $ytd_total=0; 
        foreach ($YTD as $yearData) 
        { 

         $ytd_total +=$yearData['AssocPaymentDetail']['membership_fee'] - $yearData['AssociationDiscount']['amount']; 

        } 
        echo $ytd_total."<br />"; 

       ?> 
       <?php 

       echo __l("Last 5days "); 
       $fda_total= 0; 
       foreach ($fiveDays as $fiveDaysData) 
        { 

         $fda_total += $fiveDaysData['AssocPaymentDetail']['membership_fee'] - $fiveDaysData['AssociationDiscount']['amount']; 

        } 
        echo $fda_total ."<br />"; 
       ?> 
      </td> 
      <td><?php echo __l('creditcard');?> <?php echo __l($ccSum) ?> </td> 
      <td> 
       <?php 
     //  debug($paymentRecord); 
     //  debug($ccIndex); 
        foreach($paymentRecord as $data =>$key){ 
         foreach($ccIndex as $index){ 
          if($data== $index) 
          { 
           echo "$data \t\t\t"; 
           if(is_array($key)) 
            echo array_sum($key); 
           else 
            echo "\t\t $key"; 


          } 

          echo "<br/>"; 
         } 

        } 

       ?> 
      </td> 
      </tr> 
     </tbody> 
    </table> 
</div> 

请帮我做这件事,感谢newfile.ctp提前

+0

有没有人可以回答这个问题? – user2046638 2013-02-27 11:13:06

+0

你可以试试'$('#regionID')。load();'。在这里了解更多:http://api.jquery.com/load/ – Shea 2013-02-27 11:58:38

+0

偏离主题,但你似乎在你的视图中做了很多计算。为了改进您的应用程序,最好在您的模型中执行这些计算,并仅使用“演示文稿”视图。创建记录总和可以由您的查询执行,您可能需要使用virtualFields来执行此http://book.cakephp.org/2.0/en/models/virtual-fields.html – thaJeztah 2013-02-27 23:00:44

回答

1

在放在href属性中的链接,然后通过jquery处理它们像这样的东西

$('a.nav').click(function(e){ 
e.preventDefault(); 
$.get($(this).attr('href'), function(data){ 
    $cont = $('[CONTAINERS SELECTOR]'); 
    $cont.html(data); 
}) 
}) 

EDIT-AFTER COMMENT

改变你的HTML这样的事情

<div class="container"> 
<div class="innerCont"></div> 
    <div class="span-5"> 
     <ul> 
      <li><?php echo $this->Manager->link('Ecommerce',array('controller'=>'associations','action'=>"view_report"),array('id'=> 'home','class'=>'nav'));?></li> 
      <li><a href="#" id="home" class="nav">Home</a></li> 
      <li><a href="#" id="about" class="nav">About</a></li> 
      <li><a href="#" id="contact" class="nav">Contact Us</a></li> 
     </ul> 
    </div> 

,并把内容选择到div.innerCont

$cont = $('div.innerCont'); 
+0

请问您可以解释这一行$ cont = $('[CONTAINERS SELECTOR]');我可以在哪里定义[容器选择器]? – user2046638 2013-02-27 09:51:24

+0

它的容器的选择器,你把服务器返回的HTML – 2013-02-27 09:52:16

+0

,但我的链接消失,要做到这一点?我不想消失上述链接,这些链接将在特定区域中打开,并且链接将保持显示 – user2046638 2013-02-27 09:55:53

1

你不要在你的HTML specifie区,在这里,我”我们假设它会在你的ul节点之后

$uls = $("ul.span5"); // select all page ul.span5 
$uls.each(function(){ // for all ul.span5 node 
    $ul = $(this); // current ul to work 
    $region = $("<div/>").insertAfter($ul); // dynamic create and insert the region, as a div 
    $links = $ul.find("a.nav"); // select all sub links 
    $links.click(function(e){ // click on links 
     $a = $(this); // current link 
     var href = $a.attr("href"); // i assume you work on the href 
     $region.load("myajax.php",{href:href},function(data){ // do ajax and load it in the common region 
      // here load is done, do next step here 
     }); 
     e.preventDefault(); // no real click please 
    }); 
}); 
1

您可以将单个请求处理程序的各个环节与nav作为类名,然后输出恢复到一个容器

$(".nav").on('click', function() { 
    $("#loadingdiv").load("linktoload.php"); // or other 

}); 
3

嗯,我已经做到了这一点,而无需使用任何额外的jQuery

<div class="container"> 
<div class="span-5"> 
    <ul> 
     <li><?php echo $this->Manager->link('Ecommerce',array('controller'=>'associations','action'=>"view_report"),array('update'=> '#testDiv'));?>li> 
     <li><a href="#" id="home" class="nav">Home</a></li> 
     <li><a href="#" id="about" class="nav">About</a></li> 
     <li><a href="#" id="contact" class="nav">Contact Us</a></li> 
    </ul> 
    </div> 
    </div> 
<div id = 'testdiv'></div> 

的蛋糕会通过itselp使用蛋糕的属性更新来更新该地区。非常感谢回答这个问题的人,无论回答是对还是错。感谢所有