【问题标题】:what error prevents my callback from executing often?什么错误阻止我的回调经常执行?
【发布时间】:2019-11-07 12:51:10
【问题描述】:

我正在开发一个带有 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));

我希望每次执行该过程时,都会在我的数据库中完成插入操作,但并非总是如此。有时会,有时不会,只是随机的。

【问题讨论】:

  • 不确定是否应该将 ":id" => NULL 传递给执行,因为您的 SQL 中没有绑定变量。
  • 您在调用回调函数的同时重定向。不知道你想在这里做什么?您可能想在成功函数中进行重定向
  • 不,我想这样执行
  • 我希望我的回调执行 AJAX 请求
  • 因为 Ajax 调用是异步的,所以您的函数在开始重定向之前不会等待 Ajax 运行。取决于服务器对 Ajax 请求的响应速度与重定向请求的响应速度可能会确定您的功能是否按预期工作。如果您希望它可靠,请在 .then() 回调中执行重定向......这就是它的用途。

标签: javascript php angularjs


【解决方案1】:

您的声明“在此脚本中,我有一个回调函数,之后我会重定向到另一个应用程序。”实际上是不正确的。您在调用回调函数的同时进行重定向。您可能会有不可预测的行为。

你可能想要做的是在你的 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) {

    });
});

【讨论】:

  • 感谢您的回复,但重定向功能来自不同的 javascript 文件,我该如何管理?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-16
  • 2011-08-16
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多