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

时间:2019-03-16 07:31:40

标签: javascript php jquery json

我正在尝试使用ajax在帖子中发送一个数组到我的文件“ addServicesRequest.php”,然后它将数据一一插入数据库中。

我已经进行了多次测试,但由于未显示警报成功“ Ok”,所以似乎没有发送Ajax。

请问有人知道为什么它不起作用吗?

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');


?>

非常感谢!我真的为此苦苦挣扎

2 个答案:

答案 0 :(得分:0)

使用 join 函数代替JSON.strigify。

getI.join(',')

它将所有数组值都用逗号分隔的字符串。 然后将其传递给ajax请求

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

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

我希望它能工作.. !!

答案 1 :(得分: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或数组,请对其进行验证