Javascript AngularJSON未到达php

Javascript AngularJSON未到达php,javascript,angularjs,Javascript,Angularjs,我遇到了以下问题,我有一个发出http请求的服务,当我尝试获取响应时会抛出一个解析器错误,这是因为响应在尝试解析响应时没有准备好 这是密码 simpafAPIservice.getSimulacao($stateParams.id).success(function(response){ console.log(JSON.stringify(response[0].info)); $scope.simuladorInfo.cliente = response[

我遇到了以下问题,我有一个发出http请求的服务,当我尝试获取响应时会抛出一个解析器错误,这是因为响应在尝试解析响应时没有准备好

这是密码

simpafAPIservice.getSimulacao($stateParams.id).success(function(response){
         console.log(JSON.stringify(response[0].info));
         $scope.simuladorInfo.cliente = response[0].cliente;
         $scope.simuladorInfo.info = JSON.parse(response[0].info);
         console.log(JSON.stringify(response[0].info));
         setTimeout(function(){
             for(var i=0;i<$scope.simuladorInfo.info.simuladores.length;i++){
                 $scope.addDataGraphic(i);
             }
         },100);
     });
}
正如您所看到的,当我回显$info时,它不会返回任何内容,一个空字符串,但在data.config.params中,我得到了所有参数。有人知道为什么会发生这种情况吗?

根据,$http.success在第一个参数中返回数据,只有当活动transformResponse能够检测到适当的格式时,数据才会转换为JSON:

角度变换提供以下默认变换:

响应转换 $httpProvider.defaults.transformResponse和 $http.defaults.transformResponse:

如果检测到XSRF前缀,请参阅安全注意事项 下一节。如果检测到JSON响应,则使用 JSON解析器

如果您的服务器响应的是空字符串,这里就是这种情况 然后它将不会被检测为JSON对象,并将保持为空字符串


检查您的服务器响应,它可能在没有正文和错误状态的情况下响应。如果您从不同的域请求数据,即使它最终是同一台服务器,也要注意一件事。

您的代码看起来正常,这就是从成功的代码中获得承诺并执行代码。我认为不应该使用setTimeout,而应该使用$timeout,它将在超时完成时运行$digest cycle

代码


A可能就是你要找的。谢谢,那个链接帮了大忙。我会试试这个。最后的问题是另一个,我将JSON存储在数据库中,但当JSON包含非常多的信息时,它不会到达php,有人知道为什么吗?但这只发生在在线上,当我在本地主机上工作时,它工作正常。您的状态如何?500?
    <?php

$id = $_POST["id"];
$id_col = $_POST["id_col"];
$tipo = $_POST["tipo"];
$cliente = $_POST["cliente"];
$info = $_POST["info"];

date_default_timezone_set("Europe/Lisbon");
$data = date("Y-m-d H:i:s");

require 'connection.php';

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

if($id!=""){
    $sql = "UPDATE `Simulacoes` SET `info`='".$info."' WHERE `id`='".$id."'";
}else{
    $sql = "INSERT INTO `Simulacoes`(`id_col`, `tipo`, `data`, `cliente`, `info`) VALUES ('".$id_col."','".$tipo."','".$data."', '".$cliente."', '".$info."')";
}

if ($conn->query($sql) === TRUE) {
    echo $info;
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

mysqli_close($conn);

?>
{"data":"","status":200,"config":{"method":"POST","transformRequest":[null],"transformResponse":[null],"params":{"id_col":"1","tipo":"Património Reforma","info":{"simuladores":[{"nome":"ii","info":{"prazoReforma":20,"empreendimentos":{"empreendimentos":[{"id":"1","nome":"Oporto Place","localizacao":"Porto","$$hashKey":"object:50"}],"tipologias":{"0":"Loft","19":"T2","37":"T3"},"plantas":{"0":"3.1","1":"6","2":"8","5":"3.2","12":"2.1","13":"7","14":"2.2","15":"5"},"pisos":[{"id":"2","piso":"1","$$hashKey":"object:69"}]},"entrada":"20000","duracao":"35","taxa":"5","montante":82000,"prestacao":"414","prestacao_seguros":"440","renda_liquida":"320","resultado":-120,"patrimonio":134367},"$$hashKey":"object:38","imovel":{"empreendimento":{"id":"1"},"tipologia":"Loft","planta":"3.1","piso":"2","info":{"condominio":"50","renda":"400  ","preco":"102000  ","id":"1"}},"hide":1}],"montanteTotal":134367,"pensao":"569","idadeActual":"45","idadeReforma":"65","pmII":120,"pmTotal":120}},"url":"php/guarda-simulacoes.php","headers":{"Accept":"application/json, text/plain, */*"}},"statusText":"OK"}
simpafAPIservice.getSimulacao($stateParams.id).success(function(response){
         console.log(JSON.stringify(response[0].info));
         $scope.simuladorInfo.cliente = response[0].cliente;
         $scope.simuladorInfo.info = JSON.parse(response[0].info);
         console.log(JSON.stringify(response[0].info));
         $timeout(function(){
             for(var i=0;i<$scope.simuladorInfo.info.simuladores.length;i++){
                 $scope.addDataGraphic(i);
             }
         },100);
     });
}