Igor Ivanovski
Igor Ivanovski

Reputation: 415

GET entire div with its elements and send it with php mail function

I am trying to make an function for users to send an e-mail, the e-mail should contain only 1 div from the page(note: that div has elements previously added with the jquery drag and clone function). I dont have an idea how to copy the entire div with its child elements and add them into a hidden field so that I could later send thim with POST method and then send that with e-mail function. Any ideas and recommendations?

Thank you for your time and help

Upvotes: 3

Views: 7722

Answers (3)

azy777
azy777

Reputation: 3531

Say for example your html is something like

<div id="email-data">
    <div id="content">
        some Data Here
    </div>
</div>
<a id="sendEmail" >Send Email</a>

you can use jquery to select the div and send data through ajax to a php file and then send email from that file

$(document).ready(function(){

  $('#sendEmail').click(function(){
     $.ajax({
         type: 'POST',
         url: 'sendEmail.php',
         data: { content: $('#email-data').html()}
     });
  });

});

And in the back end you could probably check for $_POST['content'] (say im using php) and modify your logic accordingly . Here's the Jsfiddle code

Upvotes: 5

Stevanicus
Stevanicus

Reputation: 7761

If i think i've understood you correctly

$(document).ready(function(){

var html = $('#divID').html();
$('#divID').hide();

//when you want to send it to php
  $.ajax(function{
    type="POST",
    url:"email.php",
    data:"data="+html,
    success:function(response){
       $('#divID').show().html("email sent");
    }
  });

});

get the data on the other side with $_POST['data']

Upvotes: 2

devdRew
devdRew

Reputation: 4581

Suppose you have a form with id mail, and hidden input with id content and name content, and submit button.

Also, you have div, where you manipulate all your entire content, with id mail-body.

Then, this code will preprocess data before submitting, and while preprocessing puts all content from working $('div#mail-body') into hidden field content.

$(document).ready(function()
{
    // Live means that if the html were loaded via AJAX, this trigger will also work.
    $('form#mail').live('submit', function(e) {
        $(this).find('input[type="hidden"]#mail-body').val($('div#content').html());
    });
});

Then you've got on a server side everything that were in $('div#content') in post/get var named $_POST['content'] or $_GET['content'].

Upvotes: 2

Related Questions