Anastasia Komarova
Anastasia Komarova

Reputation: 33

How to send js array of objects with form values via Ajax to email

I've got html form with inputs and js array of objects. Array of objects doesn't correlates with the array. They are separate units.

html:

    <form id="form-order">
      First name:<br>
      <input type="text" name="firstname">
      <input type="tel" name="phonenumber" >
      <input type="submit" value="Submit">
    </form> 

JS

$.ajax({
   type: "POST",
   data: {mydata: JSON.stringify(MyObjects)}, 
   url: "index.php",
   success: function(data){
   }
});
    var array = [{count:1,image:"images/1.jpg",name:"Bouquet 1",price:49},{count:5,image:"images/1.jpg",name:"Bouquet 9",price:77}];
            $("#form-order").submit(function() {

                        var order_data = cart;
                        $.ajax({
                        type: "POST", 
                        url: "../order.php", 
                        data: {form: form_data, 
                        order:JSON.stringify(order_data)},
                        success: function() {                         
                        console.log('OK');
                        });
                });

php

$to = "[email protected]";
    $message = '
            <html>
                <head> 
                </head>
                <body>
                   <p>Name: '.$_POST['first name'].'</p>
                   <p>Phone: '.$_POST['phone number'].'</p>
                   $someArray;
                   foreach ($extradata as $key => $value) {
                   $someArray .= "<p>".$value["image"] . ", " . 
                   $value["name"] . "</p>";
                  </body>
            </html>';

Could you check, please, weather this code works right or not?

Upvotes: 0

Views: 412

Answers (1)

ಡಿಜೆ
ಡಿಜೆ

Reputation: 59

     <form id="formoid" action="" method="post">
                <input type="text" id="firstname" name="firstname" >
                <input type="text" id="lphonenumber" name="lphonenumber" >
                <input type="submit" id="submitButton"  name="submitButton" value="Submit">
     </form>
you could do something like this

    <script type='text/javascript'>
        /* attach a submit handler to the form */
        $("#formoid").submit(function(event) {

        var array = [{count:1,image:"images/1.jpg",name:"Bouquet 1",price:49},{count:5,image:"images/1.jpg",name:"Bouquet 9",price:77}];
          /* stop form from submitting normally */
          event.preventDefault();

          /* get the action attribute from the <form action=""> element */
          var $form = $( this ),
              url = $form.attr( 'action' );

          /* Send the data using post with element id firstname, lphonenumber along with your array*/
          var posting = $.post( url, { name: $('#firstname').val(), name2: $('#lphonenumber').val(),extradata: array } );

          /* Alerts the results */
          posting.done(function( data ) {
            alert('success');
          });
        });
    </script>

and in php you could do something like,

    <?php
    if(isset($_POST['name'])){
    // To send HTML mail, the Content-type header must be set
    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    // Convert JSON string to Array
    $extradata = json_decode($_POST['extradata'], true);
   // print_r($someArray);        // Dump all data of the Array
   // Loop through Array if necessary
  $someArray;
  foreach ($extradata as $key => $value) {
    $someArray .= "<p>".$value["image"] . ", " . $value["name"] . "</p>";
  }

    $to = "[email protected]";
        $message = '
                <html>
                    <head> 
                    </head>
                    <body>
                       <p>Name: '.$_POST['first name'].'</p>
                       <p>Phone: '.$_POST['phone number'].'</p>'.$someArray.'
                      </body>
                </html>';
    $subject = "Wooo Email!";
    mail($to, $subject, $message, "From: [email protected]\r\n", $headers);
    } else {
      echo "error";
    }?>

or you could use phpmailer or swift mailer for the same

Upvotes: 1

Related Questions