У меня проблема с подключением к странице php с помощью Ajax с моего телефона. Я максимально упростила транзакцию. Код на стороне сервера:
<?php
echo(json_encode('success'));
?>
Код на стороне клиента:
$.ajax({
‘url’: "http://www.skynet.ie/~lobo/test.php",
‘success’: function(results){
alert(results);
},
‘error': function(XMLHttpRequest, textStatus, errorThrown) {
alert(JSON.stringify(XMLHttpRequest));
}
});
При тестировании с эмулятора Intel XDK я получаю успешный ответ. Когда я запускаю приложение со своего телефона (IOS), я получаю:
readyState: 0, responseText: ””, status: 0, statusText: ”error”
из функции ошибки. Я пробовал добавлять
header('content-type: application/json; charset=utf-8');
header("Access-Control-Allow-Origin: *");
на страницу php безрезультатно. Я установил $ .support.cors = true; на местном уровне. Я пытался использовать $ .getJSON и почти все параметры ajax, которые мне показались подходящими. Я получаю успешный ответ на соединение с http://time.jsontest.com с телефона, и я могу получить ответ с моего собственного сайта в эмуляторе. Я действительно не знаю, что может пойти не так, когда я пытаюсь подключиться с телефона к серверу. Я думаю, что любая идея будет принята с благодарностью.
Стивен
Вы столкнулись с проблемой CORS. Попробуйте следующее:
Чтобы вы могли отправлять запросы ajax на сторонний веб-сайт в Intel XDK или приложения, созданные в XDK, я рекомендую вам добавить xhr.js скрипт в элементе HEAD.
Например,
<!DOCTYPE html><!--HTML5 doctype-->
<html>
<head>
<title>Your New Application</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0" />
<style type="text/css">
/* Prevent copy paste for all elements except text fields */
* { -webkit-user-select:none; -webkit-tap-highlight-color:rgba(255, 255, 255, 0); }
input, textarea { -webkit-user-select:text; }
body { background-color:white; color:black }
</style>
<script src='intelxdk.js'></script>
<script src='xhr.js'></script>
<script type="text/javascript">
/* Intel native bridge is available */
var onDeviceReady=function(){
//hide splash screen
intel.xdk.device.hideSplashScreen();
};
document.addEventListener("intel.xdk.device.ready",onDeviceReady,false);
</script>
</head>
<body>
<!-- content goes here-->
<h2>Hello World</h2>
</body>
</html>
Для получения дополнительной информации о выполнении запросов AJAX в Intel XDK перейдите по ссылке https://software.intel.com/en-us/html5/articles/how-to-access-JSON-data-in-HTML5-apps
У меня была такая же проблема и обнаружил это решение на форуме Intel. Похоже, что это была ошибка в программном обеспечении Intel XDK, и все новые проекты, созданные из шаблонов, игнорировали вызовы ajax. Я только что импортировал папку моих проектов www в новый проект, и теперь работает вызов ajax. Я знаю, что, вероятно, слишком поздно для вас, но, надеюсь, это поможет кому-то еще.