Ajax передача данных через заголовки

arsen___

index.html:
var xhr = new XMLHttpRequest();
    xhr.open("GET", "getdata.php?A=true", true);
    xhr.onreadystatechange = function (){
        if(xhr.readyState == 4){
             alert(xhr.getResponseHeader("MyData"));
        }
    xhr.send(null);
getdata.php:
 if(isset($_GET["A"]))
        header("MyData: Hello World");
Делю GET запрос серверу, и получаю свой заголовок. Хотел бы воспользоваться более быстрым (не на много быстрым, но все же..) методом HEAD, т.е. так:
xhr.open("HEAD", "getdata.php", true);
Но не знаю как передать серверу параметр "A" со значением "true", и как поставить серверу условие, если существует параметр "A", то только тогда вернуть заголовки. ?Может нужно тоже заголовки передать серверу?Например:
xhr.setRequestHeader("A", "true");
Если так? то каким образом это проверить на сервере?Нагуглил $_SERVER["A"], но не уверен, что правильно.Помогите пожалуйста.
4 ответа

arsen___

не понимаю вашей проблемыкаким бы HTTP-методом вы не воспользовались при открытии серверного файла - GET, POST, PUT, HEAD и т.д. в самом серверном файле всегда есть возможность узнать значение любойпеременной окружения, в том числе и QUERY_STRINGтак что в PHP-файле вам надо иметь строку $qs = $_SERVER['QUERY_STRING'];, и переменная $qs получит значение либо 'A=true', если вы вызывали файл 'getdata.php?A=true', либо пустоту, если вызывали просто файл 'getdata.php' без query_string ----------------но ещё большее недоумение вызывает вообще сама постановка этой задачи вы на стороне клиента формируете запрос xhr.open("HEAD", "getdata.php", true); кто и что мешает вам сделать переменную и предварительно проверять - есть в ней подстрока ?A=true и если таковой нет, вовсе не посылать запрос к серверу?
var u = 'какой-то относительный адрес, полученный программно - или с ?A=true или без такового';
if (u.indexOf ('?A=true') > 0) {... xhr.open("HEAD", u, true); ...}
else {alert ('Посылать не надо ибо ответ не нужен')}


arsen___

if ( isset($_SERVER['HTTP_A']) && !strcasecmp($_SERVER['HTTP_A'], 'true') )
  header("MyData: Hello World");


arsen___

Спасибо, задача такая:сделать тоже самое что тут:
Кликните здесь для просмотра всего текста
index.html:
var xhr = new XMLHttpRequest();
    xhr.open("GET", "getdata.php?A=true", true);
    xhr.onreadystatechange = function (){
        if(xhr.readyState == 4){
             alert(xhr.getResponseHeader("MyData"));
        }
    xhr.send(null);
getdata.php:
 if(isset($_GET["A"]))
        header("MyData: Hello World");
только отправлять запрос на сервер через HEAD.


arsen___