Nasıl istek :: is_ajax () Kohana çalışır?

3 Cevap php

Bir istek bir AJAX biri olup olmadığını nasıl Kohana belirler?

Yönlendirme dizesinde farklı bir şey var mı? Ben bir GET parametresini eklemeniz gerekiyor, belki ?ajax=true?

3 Cevap

Çoğu tarayıcı, bu gösterge ile bu durumda bir başlık göndermek beri isteği XMLHttpRequest tarafından yapılır eğer kontrol eder: başlık HTTP_X_REQUESTED_WITH XMLHttpRequest atanabilir.

V2.3.4 itibarıyla

/**
 * Tests if the current request is an AJAX request by checking the 
 * X-Requested-With HTTP request header that most popular JS frameworks 
 * now set for AJAX calls.
 *
 * @return  boolean
 */

public static function is_ajax()
{
  return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND 
          strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest');
}

Bu ilk benim google arama geldi nekroz gönderme çünkü.

Kohana hala bu şekilde çalışır eğer Bilmiyorum ama HTTP_X_REQUESTED_WITH kullanarak artık en iyi uygulamadır.

Ajax istekleri - tüm HTTP istekleri aslında - bir "Accept" başlığını göndermeniz gerekmektedir.

Herhangi bir sunucu tarafı işlemi yanıt göndermek için hangi içeriğin belirlemek için "Accept" başlığını incelemek gerekir. PHP Bunu yapmanın bir yolu:

  function is_ajax() {
    return $_SERVER['HTTP_ACCEPT'] == 'application/json';
  }