简体   繁体   English

通过ajax发送一个JS数组

[英]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

  1. 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"
  2. 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM