2013-07-20 7 views
12

jQuery.ajax() normalmente invia un'intestazione X-Requested-With con XMLHttpRequest impostata come contenuto. Sul server (in PHP), di solito rilevare questo da test:

$is_ajax = $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest'

In AngularJS, si trovano comunemente in $routeProvider.when(), è possibile ottenere un modello dal server con templateUrl: '/path/on/server'.

Il mio problema è chetemplateUrl richieste sembrano non impostato X-Requested-With intestazioni, quindi non c'è modo di distinguere templateUrl richieste da qualsiasi altro tipo di richiesta.

C'è un modo per ottenere $routeProvider per inviare X-Requested-With come XMLHttpRequest?

Riferimento:

risposta

14

punta del cappello a Zerot in di FreeNode #angularjs

app.config(['$routeProvider', '$httpProvider', function($routeProvider, $httpProvider) { 
    $httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; 
    $routeProvider.when('/', { 
     templateUrl: '/path/on/server', 
     controller: 'Ctrl' 
    }); 
}); 

Edit: per essere più precisi, questa è la linea vi serve un posto:

$httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';

Problemi correlati