我正在使用PHP服务器端开发项目angularjs版本1.7.8。我在我的控制器中使用的模板中集成了JavaScript脚本。在此脚本中,我具有回调函数,之后我将重定向到另一个应用程序。我的问题是,回调函数通常会运行,并且通常不运行,但是在不起作用时不会报告错误。这是我的代码:
// angularjs中的内置脚本功能
function redirect(montant,callb){
//I encripte information
var dataEncrypt="51565445656040445666640666906565665606";
var id="test";
//function callback
callb(id);
//redirect site
window.location = 'http://monSite.com/template/index.php?test='+dataEncrypt;
}
//controller angularjs
redirect(montant,function (id){
$http.post('php/execution.php', {
data1: montant, data2: id, data3: $scope.data3, dat4: $scope.data4, data5: $scope.data5
})
.then(function success(e) {
}, function error(e) {
});
});
我的PHP代码:
$data = json_decode(file_get_contents('php://input'), TRUE);
$data1=$data['data1'];
$data2=$data['data2'];
$data3=$data['data3'];
$data4=$data['data4'];
$data5=$data['data5'];
$insererTransaction = $infos_connexion->prepare("insert into transaction (id,data1,data2,data3,data4,data5)
values(:id,:data1,:data2,:data3,:data4,:data5)");
$resultat_inserTransaction=$insererTransaction->execute(array(":id" => NULL, ":data1" => $data1, ":data2" => $data2, ":data3" => $data3, ":data4" => $data4, ":data5" => $data5));
我希望每次执行该过程时,都会在我的数据库中进行一次插入,但这并不总是会发生。有时候是随机的,有时候不是。
答案 0 :(得分:2)
您的语句“在此脚本中,我具有回调函数,之后我将重定向到另一个应用程序。”实际上是不正确的。您在调用回调函数的同时进行重定向。您可能会有无法预测的行为。
您可能想做的是在ajax调用后重定向:
redirect(montant,function (id){
$http.post('php/execution.php', {
data1: montant, data2: id, data3: $scope.data3, dat4: $scope.data4, data5: $scope.data5
})
.then(function success(e) {
var dataEncrypt="51565445656040445666640666906565665606";
//redirect site
window.location = 'http://monSite.com/template/index.php?test='+dataEncrypt;
}, function error(e) {
});
});