如何读取 PHP 中的 JQuery 映射数组?

How to read JQuery mapping array in PHP?

我正在尝试将数据从 JQuery 发送到 PHP,然后 post 将其发送到数据库。 我的 JQuery 代码是:

   var mapArray = $.map(customFieldIds, function(value) {
        return {
        name: value,
        value: customFieldValues[value]
        };
   })

看起来像这样:

mapArray = [
 {name: "1", value: "1"},
 {name: "2", value: "50"},
 {name: "3", value: "12"}
]

如何读取 PHP 中的数组?

这是我从 Ajax 端发送数据的方式:

var mapArray = $.map(customFieldIds, function(value) {
    return {
        name: value,
        value: customFieldValues[value]
    };
})

// Submit
$.ajax({
    url: 'updatePositions.php',
    type: 'POST',
    data: jQuery.param({
        "customFields": mapArray, //customFieldValues,
    }),
    dataType: 'json',
    // contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
    success: function(response) {
        alert("Success")
    },
    error: function() {
        alert("error");
    }
});

这就是我尝试读取 PHP 中的数据的方式:

<?php include('db.php'); ?>
<?php
$customFields = $_POST['customFields'];

foreach ($customFields as $key => $value) {
    $n = $key;
    $v = $value;
    $sqlCustom = "UPDATE custom_field_values SET value='$v' WHERE id='$n'";
}
$pdo->prepare($sqlCustom)->execute();
?>

只需按如下方式更改您的 &.ajax 请求:

$.ajax({
    ....
    type: 'POST', 
    data:{
         customFields: mapArray
    }
    dataType: 'json', // means that your OUTPUT (not INPUT) will be in JSON format, it's up to you
    ....
});

然后在 PHP 中更改您的 foreach loop:

foreach ($customFields as $pair) {
    $n = $pair['name'];
    $v = $pair['value'];
    $sqlCustom = "UPDATE custom_field_values SET value='$v' WHERE id='$n'";
    $pdo->prepare($sqlCustom)->execute();
}