[英]Send an JS array through Ajax
I've this type of array in JS:我在 JS 中有这种类型的数组:
[{
websitetype: "onepager"
}, {
layout: "provided"
}, {
layout_provided: "wireframes"
}, {
languages: "single"
}, {
client_name: "dasda"
}, {
client_email: "asdasd@asdasd.fr"
}, {
client_conditions: "on"
}, {
client_newsletter: "on"
}]
How can I send it through Ajax ?我如何通过 Ajax 发送它?
What I tried is:我试过的是:
$.ajax({
type: 'POST',
url: 'assets/send.php',
data: {datas},
success: function(response) { },
});
This is what I would like to get in PHP:这就是我想在 PHP 中得到的:
[datas] => Array
(
[websitetype] => onepager
[layout] => provided
[layout_provided] => wireframes
[languages] => single
[client_name] => dasda
[client_email] => asdasd@asdasd.fr
[client_conditions] => on
[client_newsletter] => on
)
What I'm missing here please ?请问我在这里缺少什么?
Thanks.谢谢。
The first thing you should do is reduce that array into an object matching the format you want您应该做的第一件事是将该数组缩减为与您想要的格式匹配的对象
const dataObject = Object.fromEntries(datas.flatMap(o => Object.entries(o)))
This looks like the following这看起来像下面这样
{
"websitetype": "onepager",
"layout": "provided",
"layout_provided": "wireframes",
"languages": "single",
"client_name": "dasda",
"client_email": "asdasd@asdasd.fr",
"client_conditions": "on",
"client_newsletter": "on"
}
You then have two options for posting it to PHP然后,您有两个选项可以将其发布到 PHP
Send it as raw JSON将其作为原始 JSON 发送
$.ajax({ method: "POST", url: "assets/send.php", contentType: "application/json", data: JSON.stringify(dataObject), processData: false })
Then read and parse the JSON in PHP然后在PHP中读取并解析JSON
$datas = json_decode(file_get_contents("php://input"), true); // example echo $datas["websitetype"]; // "onepager"
Alternatively, let jQuery format the data as an associative PHP array或者,让 jQuery 将数据格式化为关联的 PHP 数组
$.ajax({ method: "POST", url: "assets/send.php", data: { datas: dataObject } })
This will post an application/x-www-form-urlencoded
request body of这将发布一个
application/x-www-form-urlencoded
请求正文
datas%5Bwebsitetype%5D=onepager&datas%5Blayout%5D=provided&datas%5Blayout_provided%5D=wireframes&datas%5Blanguages%5D=single&datas%5Bclient_name%5D=dasda&datas%5Bclient_email%5D=asdasd%40asdasd.fr&datas%5Bclient_conditions%5D=on&datas%5Bclient_newsletter%5D=on
PHP can read this as an array via $_POST
PHP 可以通过
$_POST
其作为数组读取
print_r($_POST['datas']);
Results in结果是
Array ( [websitetype] => onepager [layout] => provided [layout_provided] => wireframes [languages] => single [client_name] => dasda [client_email] => asdasd@asdasd.fr [client_conditions] => on [client_newsletter] => on )
Encode your data string into JSON.将您的数据字符串编码为 JSON。
const datas = [{
websitetype: "onepager"
}, {
layout: "provided"
}, {
layout_provided: "wireframes"
}, {
languages: "single"
}, {
client_name: "dasda"
}, {
client_email: "asdasd@asdasd.fr"
}, {
client_conditions: "on"
}, {
client_newsletter: "on"
}]
const jsonString = JSON.stringify(datas)
$.ajax({
type: 'POST',
url: 'assets/send.php',
data: { datas: jsonString },
success: function(response) { },
});
In your PHP:在您的 PHP 中:
$data = json_decode(stripslashes($_POST['datas']));
// here i would like use foreach:
foreach($datas as $data){
echo $data;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.