Script jQuery yük veya değil tarafından çağrıldı, algılama (PHP) bir yolu var mı?

4 Cevap php

Jquery tarafından çağrılan algılamak bir script istiyorum

Değilse, o değilse, o sadece çok içerik (ama bu alakasız) ediyorum, sayfa + düzenini görüntülemek istiyorum

Ama evet, bu jquery yük tarafından çağrıldı olmadığını tespit etmek için bir yol - ajax - veya doğrudan istedi.

Şerefe!

4 Cevap

Eğer yük ile bir GET parametre göndermek değil misiniz?

Ie: jquery=1 (for load)

= 2 jquery ('düşük seviyeli' ajax çağrısı için)

Normal komut yük için başka bir değer

Sonra bir sonraki ne belirlenmesi ile PHP komut dosyası halletsin. $ _GET Değerini okuyarak ['jquery']

Eğer sunucu alırken HTTP başlıklarını bakmak isteyebilirsiniz.

Örneğin, 'ben bu sayfa var düşünelim:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.js"></script>
</head>
<body>
    <div id="test"></div>
    <script type="text/javascript">
        $('#test').load('temp.php');
    </script>
</body>
</html>

Ve temp.php script sadece bu içerir:

<?php
var_dump($_SERVER);

die;


When load is executed, the "test" <div> will contain the dump of $_SERVER ; and it'll include this, amongst other things :

'HTTP_X_REQUESTED_WITH' => string 'XMLHttpRequest' (length=14)

XMLHttpRequest Ajax isteği yapmak için kullanılan nesnedir.


This means you should be able to detect if the request was made via an AJax query, with something like this :

if (isset($_SERVER['HTTP_X_REQUESTED_WITH'])
    && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
    echo "Ajax";
} else {
    echo "Not Ajax";
}

Bu ile, sayfa "normal", ya da bir Ajax isteği üzerinden denir olmadığını algılamak ve düzeni dahil veya gerekiyorsa karar verebilirsiniz.


BTW : this is exactly the solution that's used by, for instance, Zend Framework, to
detect Ajax requests.

Ben doğru hatırlayarak ediyorsam, jQuery AJAX fonksiyonları (XMLHttpRequest değerine sahip) bir X-Requested-With başlığını gönderirler.

Zend Framework kullanarak konum eğer kullanabilirsiniz

// in one of your controllers
if ($this->getRequest()->isXmlHttpRequest()) {
  // ...
}

http://framework.zend.com/manual/en/zend.controller.request.html