Javascript AngularJSON未到达php
我遇到了以下问题,我有一个发出http请求的服务,当我尝试获取响应时会抛出一个解析器错误,这是因为响应在尝试解析响应时没有准备好 这是密码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[
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);
});
}