Reputation: 415
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
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
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
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