什么错误使我的回调无法经常执行?

时间:2019-06-25 16:12:03

标签: javascript php angularjs

我正在使用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));

我希望每次执行该过程时,都会在我的数据库中进行一次插入,但这并不总是会发生。有时候是随机的,有时候不是。

1 个答案:

答案 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) {

    });
});