2014-10-08 15 views
2

我在使用手机上的Ajax连接到php页面时出现问题。我尽可能简化了交易。服务器端代码:来自Intex XDK失败的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)); 
} 
}); 

当从英特尔XDK模拟器测试,我得到一个成功的响应。当我从我的手机(IOS)启动应用程序,我得到:

的readyState:0,responseText的:“”状态:0,状态文本:“错误”

从错误的功能。我曾尝试加入

header('content-type: application/json; charset=utf-8'); 
header("Access-Control-Allow-Origin: *"); 

到php页面无济于事。我设置了$ .support.cors = true;本地。我尝试过使用$ .getJSON,并且几乎每个我都能找到的ajax选项看起来都很相关。我从手机上连接到http://time.jsontest.com获得了成功的响应,我可以从模拟器中的我自己的站点获得响应。我真的不知道当我尝试从手机连接到服务器时会出现什么问题。我在想任何见解都将不胜感激。

Stephen

+0

你是如何为ios构建的?或者你在使用应用程序预览? – krisrak 2014-10-08 18:46:22

+0

它通过应用程序预览运行。 – stephen 2014-10-09 11:44:29

回答

2

您遇到了CORS问题。请尝试以下操作:

为了让你做出Ajax请求英特尔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> 

有关英特尔XDK内使Ajax请求的更多信息,请访问https://software.intel.com/en-us/html5/articles/how-to-access-JSON-data-in-HTML5-apps

+0

我意识到它看起来像一个CORS问题,但我已经尝试添加xhr.js并得到完全相同的结果。 – stephen 2014-10-10 14:14:42

2

我有同样的问题,发现this solution on Intel's forum。看起来这是英特尔XDK软件中的一个错误,而由模板创建的所有新项目都忽略了Ajax调用。我刚刚将我的项目www文件夹导入到一个新项目中,并且ajax调用正在工作。我知道这对你来说可能已经太晚了,但希望它能帮助别人。

+0

地狱是的你做到了! – FranciscoBouza 2016-08-11 19:18:13