【问题标题】:How can i parse only 2 keys and their values from an array in a php session to a hidden input and then into jquery ajax我如何仅将 2 个键及其值从 php 会话中的数组解析为隐藏输入,然后解析为 jquery ajax
【发布时间】:2016-05-10 23:56:08
【问题描述】:

我有这个购物车,我将所选产品的数据存储为会话中的数组。

这是数组在会话中的样子:

Array
(
[4] => Array
    (
        [name] => Елемвитал с органичен йод
        [id] => 4
        [quantity] => 1
        [price] => 16.44
    )

[3] => Array
    (
        [name] => Ритми на здраве
        [id] => 3
        [quantity] => 3
        [price] => 18.99
    )
)

现在我有一个文件 cart.php,我在其中列出了所有带有 foreach 的产品。一切正常。然后我在 foreach 下方有一个表格,其中包含用户输入的姓名、地址等信息,用于结帐。我使用引导表单验证插件,它接受用户输入并通过 jquery ajax 将其发送到 php 文件,然后将信息邮寄到我的电子邮件。我也想以某种方式包括从会话中取出的信息。我试图在 foreach 循环中的 div 上放置一个类,它列出了如下产品:productproductproduct。这很难阅读。然后我尝试在 jquery 中使用 json_encode,我得到了这个结果:

{"4":{"name":"Елемвитал с органичен йод","id":"4","quantity":"1","price":"16.44"},"3":{"name":"Ритми на здраве","id":"3","quantity":"3","price":"18.99"}}

如果我这样邮寄,这又很难阅读。有没有办法取出会话中每个数组的名称和数量并像这样列出: Items: ([name][quantity],[name][quantity]?请有人帮帮我。

【问题讨论】:

  • 你能提供电子邮件的代码,看看你是如何构建邮件正文的吗?
  • 首先我在 jquery 中获取数据 var hiddeninput = $("input#hiddeninput").val();然后我将它发布在 ajax 中,然后在 php 中我这样做: $hiddeninput = $_POST['hiddeninput'];邮件($to,$email_subject,$email_body,$headers); $email_body = "下了一个新订单。\n\n"."这里是详细信息:\n\n姓名:$first_name\n\n物品:$hiddeninput

标签: php jquery arrays ajax session


【解决方案1】:

您可以为每个namequantity 创建一个table

<?php
    $json = $yourJsonObj;
    $table='<table><tr><th>Name</th><th>Quantity</th><th>Price</th></tr>';
    foreach($json as $key=>$value){
       $table.='<tr><td>'.$value['name'].'</td><td>'.$value['quantity'].'</td><td>'.$value['price'].'</td></tr>';
    }
    $table.='</table>';
    // now mail this table in your mail body
?>

【讨论】:

  • 如果我回显 $table 变量,结果如下:
    Name Quantity Price
    如果我回显 json ,那是我的 json 对象,而值 1 不显示任何内容。
  • $yourJsonObj 替换为您的 SESSION 产品数组变量。
【解决方案2】:

好吧,当您发送邮件时,您可以像这样添加产品信息:

<?php
$email_body = "A new order was made.\n\n";
$strProducts = '';
if (isset($_SESSION['products']) && is_array($_SESSION['products'])) {
    foreach($_SESSION['produicts'] as $product) {
        $strProducts .= ($strProducts != '' ? ', ' : '(') . $product['name'] . ' ' . $product['quantity'];
    }
    $strProducts .= ")";
}
$email_body .= $strProducts;

假设您的会话变量名称是“产品”

【讨论】:

  • 非常感谢你们的帮助。 jiboulex 的解决方案对我来说就像一个魅力。 :)
猜你喜欢
  • 1970-01-01
  • 2011-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-16
  • 2020-01-06
  • 1970-01-01
相关资源
最近更新 更多