MVC ajax aramalar - nerede bunları işlemek için?

3 Cevap php

Ben inşa ediyorum bir öz-haddelenmiş MVC çerçevesi var, ve bu noktaya kadar herhangi bir AJAX aramalar için ihtiyaç önlemek başardı. Şimdi, ancak, gerçek zamanlı güncelleme beslemesi oluşturmak istiyorum.

Genellikle MVC saklanan ajax aramalar için işleyicileri nerede Benim soru, değil mi? Ben arama yaparken katılır aynı kontrolör saklayın gerekir?

Benim etki alanı www.example.com / Tarama / bloglar Örneğin, (göz denetleyici olduğu, bloglar yöntemdir) bloglar güncelleştirilmiş listesi için bir AJAX çağrısı yapıyor, çağrı sadece www.example.com/ olacaktır göz / update_list falan?

OR, bu nedenle ayrı bir AJAX-sadece denetleyici olacak? www.example.com / ajax / update_blogs

Bunu nasıl yapabilirim?

3 Cevap

HTTP Protokolü bakış bir noktadan, aslında, tam olarak aynı şekilde çalışır: Bir Ajax isteği olmayan bir Ajax biri tam olarak aynı olduğunu söyleyebilirim.

Tek fark, JSON veya XML (hey, this is the same as generating an ATOM feed ^^ ) gibi, bazı non-format verileri, iade veya bir HTML sayfası sadece bir kısmı olmasıdır.

Yani, başka herhangi bir "normal" HTTP isteği gibi bu tedavi, ve onları ben non-Ajax istekleri için yaptığınız şekilde yer olacaktır.


A semi-alternate idea might be to have only one action in your controlller : /browse/blogs -- and always call that one.

Ama buna bir Ajax isteği ile veya olmamak eğer algılamak, ve olurdu:

  • "normal" bir istek üzerinden denilen eğer bir tam sayfa dönmek
  • Bir Ajax isteği üzerinden denilen ya da eğer sadece bazı verileri (veya sayfanın bir bölümünü) return

Not: bir "vahşi" bir fikir değil; Zend Framework, örneğin, (bkz: 12.8.4.3. ContextSwitch and AjaxContext) olduğunu kolaylaştırmak için bazı şeyler sağlar

En iyi uygulama tamamen bir AJAX isteği var gerçeğini göz ardı etmek ve sadece AJAX isteği uygun olduğunu ne denetleyici dert olacaktır. Eğer bir catch-all AJAX denetleyicisi var olsaydı muhtemelen tabiri caizse, armut elma gruplama olurdu.

Temel fark AJAX istekleri için muhtemelen herhangi bir düzen (ve büyük olasılıkla bir görünümden daha fazla) veri ayarı kaçınmak gerekir olmasıdır. Bu kolayca geçerli AJAX istekleri için denetler, üst Controller sınıfından bir yöntem olan çözülebilir:

protected function isAjax()
{
    return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
            $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest');
}

Eğer asp.net MVC kullanarak değil olsa bile, ben, sen inek yemeği öğretici ile bakmak, özellikle AJAX bölümünü tavsiye ederim. bu tasarım bazı sorulara cevap yardımcı olacaktır.

Onlar aynı kontrolör üzerinde ayrı bir eylem var.

http://www.wrox.com/WileyCDA/Section/id-321793.html