我正在尝试使用ajax将一个数组发送到我的文件“addServicesRequest.php”,然后将数据逐个插入到数据库中。
我做了多次测试,似乎ajax没有发送,因为警报成功“Ok”没有显示。
有人知道为什么它不起作用吗?
function totalBeforeSubmit(){
var totalService = $('#totalPriceService').val();
var globalTotal = 0;
var getI = [];
for(var i = 0; i <= totalService; i++){
if($('#'+i).is(":checked")){
var total = $('#'+i).val();
globalTotal = parseInt(globalTotal )+ parseInt(total);
getI[i] = $('#'+i).closest('.form-control').find('.iHidden').html();
}
}
//PROBLEM HERE:
$('.calculatePrice').click(function(){
var jsonString = JSON.stringify(getI);
$.ajax({
type: "POST",
url: "addServicesRequest.php",
data: {data : getI},
cache: false,
success: function(){
alert("OK");
}
});
});
alert(globalTotal);
if(globalTotal == 0){
window.location.replace('addServices.php');
alert('Veuillez selectionner un ou des services avant de valider');
return false;
} else {
return true;
}
}
在addServicesRequest.php中:
<?php
require_once('connectDatabase.php');
$data = json_decode(stripslashes($_POST['data']));
foreach($data as $d){
$insert = $bdd->prepare('INSERT INTO chosen_services (id_service) VALUES (:id_service)');
$insert->execute(array(
"id_service" => $d
));
}
header('Location: addServices.php');
?>
非常感谢提前!我真的很挣扎
使用join函数而不是JSON.stringify。
getI.join(',')
它将以逗号分隔的字符串使所有数组值。然后在ajax请求中传递它
并在PHP中使用“explode”再次转换数组
explode(',', $_POST['data'])
我希望它能工作.. !!
使用序列化的json
var jsonString = JSON.stringify(getI);
$.ajax({
type: "POST",
url: "addServicesRequest.php",
data: {data : jsonString},
cache: false,
success: function(){
alert("OK");
}
});
将true设置为第二个参数以获取数组而不是stdClass
$data = json_decode($_POST['data'], true);
$ data可以是false或array,验证它