передача данных из php в javascript для гибридных приложений

я создаю кросс-платформенное мобильное приложение, используя Intel XDK, и мне нужно получить данные из php, работающего на сервере, в мой javascript...... это мой код js

var meRequest;
meRequest = new XMLHttpRequest();
meRequest.onreadystatechange=function()
{
    if(meRequest.readyState==4)
    {
        alert("request sent");
        alert((meRequest.responseText));
    }
}

meRequest.open("GET", "http://127.0.0.1/my_queries_1.php",true);
meRequest.send();

и это мой php-код:

<?php
echo json_encode(500);
exit;
?>

это работает, когда я запускаю их оба с локального хоста, то есть оба скрипта находятся на сервере, но я не могу использовать это, так как для приложения js должен быть встроен в мобильное приложение, а скрипт php остается на сервере... но если я запустил файл javascript за пределами локального хоста, я получу нулевой ответ. как мне это сделать пожалуйста??


person lukman    schedule 26.05.2016    source источник


Ответы (1)


Итак, вам нужен междоменный запрос, и я думаю, что что-то вроде этого должно работать для вас:

// (1)
var XHR = ("onload" in new XMLHttpRequest()) ? XMLHttpRequest : XDomainRequest;

var xhr = new XHR();

// (2) cross domain request
xhr.open('GET', 'http://anywhere.com/request', true);

xhr.onload = function() {
  alert( this.responseText );
}

xhr.onerror = function() {
  alert( 'error ' + this.status );
}

xhr.send();

Серверная сторона также должна разрешать такие запросы, генерируя специальные заголовки ответа:

HTTP/1.1 200 OK
Content-Type:text/html; charset=UTF-8
Access-Control-Allow-Origin: http://example.com
person Nick Surmanidze    schedule 26.05.2016
comment
привет ... я получаю предупреждение об ошибке 0 ... не могли бы вы пролить больше света на серверную сторону ... третья строка вашего кода, я предполагаю, что она указывает, какому домену должно быть разрешено делать междоменные запросы ... можно ли заменить это на «%», чтобы разрешить доступ со всех устройств??.. Спасибо. - person lukman; 26.05.2016
comment
Возвращаемый ресурс может иметь один заголовок Access-Control-Allow-Origin со следующим синтаксисом: Access-Control-Allow-Origin: ‹origin› | * Параметр origin указывает URI, который может получить доступ к ресурсу. Браузер должен обеспечить это. Для запросов без учетных данных сервер может указать * в качестве подстановочного знака, тем самым позволяя любому источнику получить доступ к ресурсу. - person Nick Surmanidze; 26.05.2016
comment
Дополнительную информацию можно найти здесь: разработчик .mozilla.org/en-US/docs/Web/HTTP/ - person Nick Surmanidze; 26.05.2016
comment
все еще получаю сообщение об ошибке 0... и вообще никаких предупреждений от xhr.onload... как мне разрешить такие запросы с сервера? .. включить это в мой php-скрипт?? пробовал... не работает... извините, если я звучу как идиот - person lukman; 26.05.2016
comment
Не беспокойтесь, Лукман. Вот документация по заголовкам php: php.net/manual/ru/function.header.php и вот как вы отправляете заголовок header('Location: example.com/') ; выход; , но он должен быть поверх вашего php-файла, и после того, как ваши php-скрипты распечатают данные json или xml, введите функцию die или exit. замените Location: example.com информацией в заголовке. - person Nick Surmanidze; 26.05.2016
comment
Та же ошибка 0 по-прежнему .. это мой php-код <?php header('HTTP/1.1 200 OK Content-Type:text/html; charset=UTF-8 Access-Control-Allow-Origin: *'); echo json_encode(500); exit; ?> - person lukman; 31.05.2016