【发布时间】: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