Javascript 将html变量从Ajax传递到PHP
我试图使用此代码通过POST传递包含HTML的变量Javascript 将html变量从Ajax传递到PHP,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我试图使用此代码通过POST传递包含HTML的变量 var data = { message: $('#mydiv').html() }; jQuery.ajax({ type: 'POST', data: data, url: '/myurl?action=send_email', success: function( response ) { } }); 在PHP中,我检索数据并使用数据内容发送电子邮件 $message = "Hello<br
var data = {
message: $('#mydiv').html()
};
jQuery.ajax({
type: 'POST',
data: data,
url: '/myurl?action=send_email',
success: function( response ) { }
});
在PHP中,我检索数据并使用数据内容发送电子邮件
$message = "Hello<br>" . $_POST['message'] . "<br>Bye Bye";
$mail = mail($email, $subject, nl2br($message), $headers);
我收到的电子邮件中的HTML格式不正确:
<img width="\"70\"" height="\"87\"" alt="\"D_6928_antiqueoak_vapor\"">
有人能告诉我为什么,有没有解决办法?非常感谢使用encodeURIComponent尝试此方法
发送HTML电子邮件时始终设置内容类型
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
我就是这样解决的。Javascript
var data = {
message: $('#mydiv').html()
};
jQuery.ajax({
type: 'POST',
data: data.replace(/&/g, "&")
.replace(/"/g, """)
.replace(/'/g, "'"),
url: '/myurl?action=send_email',
success: function( response ) { }
});
PHP
你到底为什么要发送HTML?呃。。。为什么不呢?您是否收到大量纯文本电子邮件?没有格式,没有换行符等等?@Ruben你的邮件头是什么?你激活UTF-8编码了吗?没有,我是说你为什么要从浏览器向服务器发送HTML。验证或清理将非常困难,只需使用$.data或$.attr'whatever并发送普通数据,然后使用这些数据构建HTML。@papirtiger如果可以发送HTML,那么如果可以从已经布置好并准备就绪的客户端获取HTML,为什么还要麻烦在服务器端重建HTML呢。更不用说它会使抽象php代码变得更容易谢谢你的提示,但我认为这与问题无关
var data = {
message: $('#mydiv').html()
};
jQuery.ajax({
type: 'POST',
data: data.replace(/&/g, "&")
.replace(/"/g, """)
.replace(/'/g, "'"),
url: '/myurl?action=send_email',
success: function( response ) { }
});
$message = preg_replace('/&/', '&', $_POST['message']);
$message = preg_replace('/"/', '"', $message);
$message = preg_replace('/'/', "'", $message);
$message = "Hello<br>" . $message . "<br>Bye Bye";
$mail = mail($email, $subject, nl2br($message), $headers);