简单的HTTP GET无法使用https来获取JSON

时间:2015-09-15 14:07:29

标签: javascript php json ajax angularjs

我有一个使用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”时相同的数据?

1 个答案:

答案 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对象。