我有一个使用AngularJS和Onsen UI构建的这个工作PhoneGap应用程序,它访问一个PHP文件,它在响应中获取一些数据。 php文件位于一个带有简单http的域上,但是现在我将它移动到支持https的域,我不断碰到一些奇怪的问题。
我尝试了AngularJS异步获取数据的方式,也尝试了ajax调用。
$http.get('https://blablabla.com/file.php?parameters').then(function(response) {
//SUCCESS
alert(response);
var z = response;
},function(response) {
alert("Failed");
});
它转到SUCCESS部分,但我在其中的数据不正确。它应该是一个字符串(一个普通的JSON字符串,我将字符串化并转换为json对象)
ajax调用如下:
function httpGet(theUrl) {
var dataToReturn;
$.ajax({
type: 'GET',
url: theUrl,
cache: false,
async: false,
data: "",
success: function(data, textStatus, result) {
dataToReturn = data;
},
error: function (result, textStatus, errorThrown) {
alert("Failed to get response from server!");
}
});
return dataToReturn;
//var xmlHttp = new XMLHttpRequest();
//xmlHttp.open( "GET", theUrl, false ); // false for synchronous request
//xmlHttp.send( null );
//return xmlHttp.responseText;
};
我基本上是通过PhoneGap应用程序调用https中的PHP脚本。 如果我将地址更改为http,它可以完美地运行......
我还想要你注意,PhoneGap基本上创建了某种本地代理。我不确定如何详细阐述这个,但是......
有关如何解决此问题的任何想法,以获得与地址简单“http”时相同的数据?
答案 0 :(得分:0)
如果从PHP服务器端设置正确的标头,Angular会自动转换json:
header('Content-Type: application/json');
就在回声之前。
第二,你的获得似乎缺少一个括号
$http.get('https://blablabla.com/file.php?parameters')
.then(function(response) {
//SUCCESS
alert(response);
var z = response;
},function(response) {
alert("Failed");
});
第三,响应不再是直接响应,而是response.data
所以你可能想尝试
alert(response.data);
var z = response.data;
警告!这取决于你的Angular.js版本
根据你所使用的角度版本,有几种不同的语法用于$ http对象。