在post中发送数组时,JSON.stringify无法正常工作并插入数据库中

问题描述 投票:0回答:2

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


?>

非常感谢提前!我真的很挣扎

javascript php jquery json
2个回答
0
投票

使用join函数而不是JSON.stringify。

getI.join(',')

它将以逗号分隔的字符串使所有数组值。然后在ajax请求中传递它

并在PHP中使用“explode”再次转换数组

explode(',', $_POST['data'])

我希望它能工作.. !!


0
投票

使用序列化的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,验证它

© www.soinside.com 2019 - 2024. All rights reserved.