Neden benim ajax çağrı tamamladıktan gönderirken, ama ben CakePHP gelen yanıt bir 404 almak değil mi?

0 Cevap php

Ben şu ajax çağrı var:

$("#welcome a.close").click(function(e) {
    $.ajax({
        type: "GET",
        url: "/visitors/hide_welcome",
        success: function(){
            $("#welcome").hide(0);
            e.preventDefault();
        }
    });
});

Sitemde şu parçasına hedefleniyor:

<div id="welcome">
    <h2>Welcome  <a class="close" href="Javascript:;"></a></h2>
    <div class="left">
    </div>
    <div class="right">
        <div class="loginElement">

        </div>
    </div>
    <div class="clear"></div>
</div>

Ajax isteği cevaplamak için aşağıdaki kodu:

<?php
class VisitorsController extends AppController {

        function hide_welcome() {
                if($this->RequestHandler->isAjax()) {
                        $this->Session->write('Welcome.hidden', true);
                        echo 'Success.';
                }
                else {
                        echo 'I am, in fact, here.<br>';
                        $this->autoRender = false;
                }
        }

}
?>

Bu oldukça yalındır bulunuyor. Onlar karşılama gizli ettik belirterek bir oturum değişkeni ayarlamak için /visitors/hide_welcome çağırır. Ama tamamlamak için görünmüyor. Öyle gibi, bunun iki tarafında uyarıları koyarsanız:

$("#welcome a.close").click(function(e) {
    alert("Begin.");
            $.ajax({
        type: "GET",
        url: "/visitors/hide_welcome",
        success: function(){
            $("#welcome").hide(0);
            e.preventDefault();
        }
    });
            alert("End.");
});

Onlar tetikleyecektir. Ama yerleştirilen uyarıları success göz ardı edilir. Aynı error ve complete için de geçerlidir. Bu benim test makinede gayet güzel çalışıyordu. Söz konusu sayfa kesinlikle var, ben dışarı ajax ile ulaşabilirsiniz. Kundakçı şey raporları, ne hata konsolu yapar. Success sadece asla patlar.

Tuhaf bir parçası olduğunu sıklıkla hoş gösteren, kaybolur elle yeniden eğer ajax arama did ateş. Bu sadece asla geri döndü. Burada neler oluyor? Ben fikir sonunda kulüpler. Herhangi bir ben henüz havladı değil herhangi bir ağaç gördünüz mü?

SOLUTION:

CakePHP otomatik gerekiyordu ajax çağrıları algılar. Ancak, bu durumda, bu değildi. Sonuç olarak ben Ajax vardı kod çalıştıran, ama bir görünüm bulmak için başarısız zaman sonra 404 dönüyordu. Çözelti $this->autoRender= false; ajax taşıma denetleyici fonksiyonunun sonuna eklemek oldu. Her şeyin güzel çalıştı sonra.

0 Cevap