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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在post中发送数组时,JSON.stringify无法正常工作并插入数据库中相关的知识,希望对你有一定的参考价值。

我正在尝试使用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,验证它

以上是关于在post中发送数组时,JSON.stringify无法正常工作并插入数据库中的主要内容,如果未能解决你的问题,请参考以下文章

当我在数据库中使用 Alamofire 发送三个数组帖子时出现错误?

React js 和 axios POST 请求发送空数组

如何在我的API中将前端的json属性分配给多个后端模型?

在 ReactJs 中使用 axios 发送 POST 请求时 $_FILES 为空

jquery的$post方法不发送空数组的解决办法

WCF POST 通过 JQuery。如何在 JSON 中发送数组?