Intereting Posts
Есть ли у PHP структуры или перечисления, а если нет, то какая из них лучшая для них? Как этот плагин может читать RSS-каналы без междоменной проблемы? Принуждение объекта SimpleXML к строке, независимо от контекста Необходимость префиксации всех страниц PHP с помощью ob_start () Создание PDF-помощника для CakePHP 2.0 с использованием TCPDF PHP Предупреждение: move_uploaded_file () не может перемещаться Как разобрать любой формат даты Форматирование даты mysql с помощью php Разбиение на страницы с использованием MySQL LIMIT, OFFSET Как передать данные для просмотра в Laravel? Вызов пользовательских функций в PHP eval () Акцентированные символы, не показывающие при использовании imagettftext с otf, но показывающие с ttf как расширить модуль авторизации пользователя kohana Как преобразовать PDF в текст, чтобы я мог разобрать этот текст с помощью PHP? Генератор документации PHPDoc в или из Eclipse?

Определить URL-адрес вызова Ajax

У меня есть документ HTML, который загружает контент из файла PHP с помощью вызова AJAX. Важный бит моего кода ниже:

default.html:

/*more code above*/ var PHP_URL = "content.php"; var Content = document.getElementById('Content'); ajaxRequest = new XMLHttpRequest(); ajaxRequest.onreadystatechange = function() { if(ajaxRequest.readyState==4) { if (ajaxRequest.status==200) Content.innerHTML = ajaxRequest.responseText; else Content.innerHTML = "Error:<br/>unable to load page at <b>"+PHP_URL+"</b>"; Content.className = "Content Solid"; } } ajaxRequest.open("GET",PHP_URL,true); ajaxRequest.send(); /*more code below*/ 

Возможно ли, чтобы файл в 'content.php' обнаружил, что он был вызван из 'default.html', или, если необходимо, другой вызывающий документ?

Solutions Collecting From Web of "Определить URL-адрес вызова Ajax"

Наиболее известные структуры Ajax, такие как jQuery и mooTools, добавляют определенный заголовок, который вы можете проверить с помощью PHP:

 if (strcasecmp('XMLHttpRequest', $_SERVER['HTTP_X_REQUESTED_WITH']) === 0) { // Ajax Request } 

Я думаю, лучше всего было бы установить заголовок запроса в вашем вызове AJAX, например

 st.setRequestHeader('X-Sent-From','default.html') 

затем в content.php,

 $sentFrom=$_SERVER['HTTP_X_SENT_FROM']; // outputs default.html 

$_SERVER['HTTP_REFERER'] может быть тем, что вы хотите

Справка

Невозможно просто обнаружить, что запрос поступает от вызова AJAX на сервере. Однако вы можете добавить параметр, который вы отправляете, запрашивая его через AJAX, который указывает, что он поступает из вызова ajax.

Например:

 /*more code above*/ var PHP_URL = "content.php?mode=AJAX"; var Content = document.getElementById('Content'); ajaxRequest = new XMLHttpRequest(); ajaxRequest.onreadystatechange = function() { if(ajaxRequest.readyState==4) { if (ajaxRequest.status==200) Content.innerHTML = ajaxRequest.responseText; else Content.innerHTML = "Error:<br/>unable to load page at <b>"+PHP_URL+"</b>"; Content.className = "Content Solid"; } } ajaxRequest.open("GET",PHP_URL,true); ajaxRequest.send(); /*more code below*/ 

Если просто обнаружить, что вызов пришел из default.html, достаточно (и не различайте вызов AJAX или щелкнув ссылку), тогда проверка заголовка Referrer сделает трюк, как это предлагает @Jamie Wong.