2013-02-27 2 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> 

данные, которые я хочу, чтобы открыть из электронной коммерции ссылки является ИНТ на newfile.ctp как тот

<?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> 

Пожалуйста, помогите мне сделать это, спасибо заранее

+0

есть ли кто-нибудь, кто может ответить на этот вопрос? – user2046638

+0

Вы можете попробовать '$ ('# regionID'). Load();'. Подробнее читайте здесь: http://api.jquery.com/load/ – Shea

+0

Вне темы, но вы, кажется, делаете много расчетов внутри своего вида. Чтобы улучшить ваше приложение, лучше всего выполнять такие вычисления в своих моделях и использовать только представления для «презентации». Создание сумм записей может быть выполнено по вашим запросам, возможно, вам придется использовать virtualFields для этого http://book.cakephp.org/2.0/en/models/virtual-fields.html – thaJeztah

ответ

1

положить в ссылки в атрибуте href, а затем обрабатывать их через jquery примерно так

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

EDIT-ПОСЛЕ К.П

изменить ваш 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 = $ ('[КОНТЕЙНЕРЫ SELECTOR]'); где я могу определить [КОНТЕЙНЕРЫ SELECTOR]? – user2046638

+0

его селектор контейнера, в который вы помещаете в html, возвращаемый сервером –

+0

, но мои ссылки исчезают, чтобы сделать это? Я не хочу исчезать выше ссылки, эта ссылка откроется в конкретном регионе, и ссылки появятся. – user2046638

1

вы не specifie область в вашем HTML, здесь я» Предположим, что это будет сразу после вашего узла 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> 

торт обновит регион по своему усмотрению, используя обновление свойств торта. Большое спасибо, кто отвечает на этот вопрос, а не ответ на вопрос правильно или неправильно. спасибо

Смежные вопросы