Я звоню ajax.php
с помощью jQuery. Он все время возвращает JSON-ответ.
$.ajax({
type: 'POST',
url: 'ajax.php',
data: 'some=info',
dataType: 'json',
success: function(data) {
if(data != null) {
console.log(data);
} else {
alert('IE fails here!');
}
}
});
Ajax всегда возвращает некоторые данные в формате JSON. Он отлично работает во всех браузерах, кроме IE (проверено на IE 7, 8 и 9). В IE он всегда печатает предупреждение (что означает, что он никогда не получает информацию ответа). Есть идеи?
Обновление 1 : Я только что подтвердил, что сообщение никогда не было успешным в IE, поэтому данные всегда нулевые.
Обновление 2 : сообщение приходит, но возвращает ноль, только когда оно IE.
Обновление 3 (решение) : по моей вине ajax защищал от вызовов с других серверов. В начале он использует оператор if (), который запрашивает хост $ _SERVER ['HTTP_REFERER']] на том же сервере. Теперь возникает вопрос: почему IE не распознает $ _SERVER ['HTTP_REFERER'] в вызове ajax ?
Это код API (php)
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$security = parse_url($_SERVER['HTTP_REFERER']);
if(in_array($security['host'],array('localhost','tradukka.com','173.203.198.123'))) {
header('Content-type: application/json');
$array = array('nice','data','for','api');
echo json_encode($translation);
}
}
}
Сбой IE при проверке $ _SERVER ['HTTP_REFERER']: s