Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将html变量从Ajax传递到PHP_Javascript_Php_Jquery_Html_Ajax - Fatal编程技术网

Javascript 将html变量从Ajax传递到PHP

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

我试图使用此代码通过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>" . $_POST['message'] . "<br>Bye Bye";
$mail = mail($email, $subject, nl2br($message), $headers);
我收到的电子邮件中的HTML格式不正确:

<img width="\&quot;70\&quot;" height="\&quot;87\&quot;" alt="\&quot;D_6928_antiqueoak_vapor\&quot;">
有人能告诉我为什么,有没有解决办法?非常感谢

使用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, "&amp;")
            .replace(/"/g, "&quot;")
            .replace(/'/g, "&#039;"),
    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, "&amp;")
            .replace(/"/g, "&quot;")
            .replace(/'/g, "&#039;"),
    url: '/myurl?action=send_email',
    success: function( response ) { }
});
$message = preg_replace('/&amp;/', '&', $_POST['message']);
$message = preg_replace('/&quot;/', '"', $message);
$message = preg_replace('/&#039;/', "'", $message);
$message = "Hello<br>" . $message . "<br>Bye Bye";
$mail = mail($email, $subject, nl2br($message), $headers);