2016-03-28 15 views
0

kullanarak düzgün mesajını görüntüleyen problem değil: .ajax kullanarak bir ajax arama yapmaya çalışıyorumAjax çağrı Yani burada Yii çerçevesini

. Ancak, denetleyicimin iyi görüntü dosyasına yönlendirmediği ve sayfamda hiçbir şey görüntülenmediği için bir yerde yanlış şeyler oluyor.

  <?php 

      echo '<script language="javascript">'; 
      echo 'alert("message successfully sent")'; 
      echo '</script>'; 
      echo "HI FROM BACKEND! here's what you gave to PHP: <br>"; 
      print_r($data); 
      ?> 

Yani ben:

  public function actionAjaxExample() 
{ 
    $post_data = $_POST['myData']; 



    $this->renderPartial('_ajax', array(
      'data'=> $post_data, 
     ) 
    ); 

} 

görünüm dosyasını _ajax yönlendirmek için çalışıyor: ajax çağrısı burada Şimdi

 $('#validate').on('click',function(){ 
     var data = []; // data container 
     // collect all the checked checkboxes and their associated attributes 
     $("table#subsection_table input[type='checkbox']:checked").each(function(){ 
      data.push({ 
       subsectionid : $(this).val(), 
       sectionid : $(this).data('sectionid'), 
       year : $(this).data('year') 
      }) 
     }); 
     // JSON it so that it can be passed via Ajax call to a php page 
     var data = JSON.stringify(data); 


     $.ajax({ 
      url : "<?php echo Yii::app()->createAbsoluteUrl("scheduler/AjaxExample"); ?>", 
      type: "POST", 
      data : "myData=" + data, 
      success : function() 
      { 
       alert("in success"); 
       $("#ajax-results").html(data); 
       $("#ajax-results").dialog({ width: 500, height: 500}) 
      }, 
      error: function() 
      { 
       alert("there was an error") 
      } 
     }) 
     console.log(JSON.stringify(data)); 

     $('#dialog').html(data).dialog({ width: 500, heigh: 500}); 
    }); 

olur benim denetleyicisi kodu İşte burada

olduğunu Açıkçası yanlış bir şeyler yapıyor ama ... Ajax aramaları gerçekleştiği için nerede göremiyorum (en azından #val benim click olayıyla ilgili idate. Ancak, son görüntüleme dosyası, uyarı kutusu VEYA "arkadan merhaba" ifadesini görüntülemiyor.

+0

ile ilgili herhangi bir sorun olduğunda, lütfen kodunuzun vermiş olduğu URL'yi kontrol edebilirsiniz: " createAbsoluteUrl (" scheduler/AjaxExample ");?>" Doğru ? – Kruser

+0

da, AccessControl etkinleştirilmiş bir filtre() tanımladığınız takdirde AjaxExample() yönteminize erişebilmeniz gerekir. Js kodunuzda cevap verisini başarı fonksiyonuna aktarmıyorsunuz, şöyle bir şey yapmalısınız: 'başarı: fonksiyon (cevap) { uyarı (“ başarıda ”); uyarısı (yanıt); ... } 'Böylece sunucu yanıtını kolayca kontrol edebilirsiniz. – Kruser

+0

Oh benim fonksiyonum (veri) yapmayı unuttum. Erişim kontrolü için, sadece benim (ki ben zaten düşünüyorum sanmıyorum, ben Yii için yeni değilim) dosyamda accessRules() kullanıyorum olduğunu okudum. AjaxExample gelince, Korumalı -> Denetleyici -> Zamanlayıcı Denetleyici -> actionAjaxExample altında bulunur. Aksi takdirde benim konsolumda bulunamadı 404 url ​​verir? – MimeRea

cevap

0

Dene: kaldır var data = JSON.stringify(data);

değişiklik

data:{myData:data}, 
0

Sorunun url tırnak olduğunu düşünüyorum. Konsolda JavaScript hatası alıp almadığınızı kontrol edin. Bazı hatayı alıyorsanız , bu

$.ajax({ 
     url : "<?php echo Yii::app()->createAbsoluteUrl("scheduler/AjaxExample"); ?>", 
     type: "POST", 

$.ajax({ 
     url : '<?php echo Yii::app()->createAbsoluteUrl("scheduler/AjaxExample"); ?>', 
     type: "POST", 

herhangi bir hata almıyorum, konsolda xhr sekmesini kontrol edin Eğer

, Whats url, ajax vuruyor değiştirin.