通过 ajax 发送 HTML - 在标签中添加反斜杠
Sending HTML via ajax - adds a backsklash in a tag
下面的问题。我得到一个带有占位符标签的文本块,用正确的内容替换这些占位符并将这个文本块放在文本区域中。 jquery val().
在此文本区域中,所有内容均显示正确。换行符和 URL link。 (a标签的HTML)
如果我现在得到这个 val() 并通过 Ajax 将它发送到发送邮件的 PHP 函数,就会出现问题。文本块是邮件的正文。
文本块在邮件中正确显示,加粗标签,换行,没问题。
但是使用 a 标签我得到了反斜杠。
我现在看了很多,有转义,json等,但是都不成功
可能是我迷路了。谁能告诉我它在哪里并指出正确的方向。
这里有一些代码摘录。
$( ".jsClickClaimsSendSH" ).click(function() {
var ajaxurl = $(this).data("ajax");
var action = 'claim_defects_breach_of_contract_send_mail';
var claimtype = $(this).data("claimtype");
var leadID = $(this).data("leadid");
var uniqueid = $(this).data("uniqueid");
var subject = $("#claimsmailbodycontainer .claimssubjectbody").val();
var mailbody = $("#claimsmailbodycontainer .claimsmailbody").val();
$.ajax({
type: "POST",
url: ajaxurl,
data: {
action : action,
claimtype : claimtype,
leadID : leadID,
uniqueid : uniqueid,
subject : subject,
mailbody : mailbody
},
success: function( result ){
}
});
});
在 PHP 函数中它看起来像这样
$mailbody = $_POST['mailbody'];
$headers = [];
$headers[] = 'From: '.$mailFrom;
$headers[] = 'Reply-To: '.$mailReplyTo;
$headers[] = 'Content-Type: text/html; charset=UTF-8';
$headers[] = 'X-Mailer: PHP/' . phpversion();
ob_start();
include_mail_template_php ($getPageLanguage.'/claimmail');
$message = ob_get_contents();
ob_end_clean();
// '%%text-body%%' is placeholder tag in the mail template for the $mailbody
$variables = array(
'%%text-body%%',
);
// set replacements for variables
$values = array(
$mailbody
);
$message = str_replace( $variables, $values, $message );
wp_mail($empfaenger, $subject, $message, $headers);
邮件中a标签的HTML是这样的。你不能点击 link.
<a+href="http://localhost/abc/page/?l=6194a9edac24c"+target="_blank">more</a>
添加1
在 jquery 调用的请求中,HTML 看起来仍然不错。
<a+href="http://localhost/abc/page/?l=6194a9edac24c"+target="_blank">hier</a>
占位符标记所在的邮件模板部分。此占位符将替换为邮件正文文本。
<table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
<td style="padding: 20px; font-family: sans-serif; font-size: 15px; line-height: 20px; color: #555555; background-color: white; white-space: pre-line; ">
<p style="margin: 0;">
%%text-body%%
</p>
</td>
</tr>
添加2
一天是从哪里来的。
我用 ACF 保存了一个文本,占位符是这样的
<a href="%%LinkInvoice%%" target="_blank">more</a>
您是否尝试过使用 wp_unslash()
函数。
在这种情况下的用法类似于:
$message = str_replace( $variables, $values, $message );
$message = wp_unslash( $message ); // Strip slashes here!
wp_mail($empfaenger, $subject, $message, $headers);
或者甚至...
// set replacements for variables
$values = array(
wp_unslash( $mailbody )
);
您的问题没有提供足够的信息来说明示例 <a>
标记输出的来源。
下面的问题。我得到一个带有占位符标签的文本块,用正确的内容替换这些占位符并将这个文本块放在文本区域中。 jquery val().
在此文本区域中,所有内容均显示正确。换行符和 URL link。 (a标签的HTML)
如果我现在得到这个 val() 并通过 Ajax 将它发送到发送邮件的 PHP 函数,就会出现问题。文本块是邮件的正文。
文本块在邮件中正确显示,加粗标签,换行,没问题。
但是使用 a 标签我得到了反斜杠。
我现在看了很多,有转义,json等,但是都不成功
可能是我迷路了。谁能告诉我它在哪里并指出正确的方向。
这里有一些代码摘录。
$( ".jsClickClaimsSendSH" ).click(function() {
var ajaxurl = $(this).data("ajax");
var action = 'claim_defects_breach_of_contract_send_mail';
var claimtype = $(this).data("claimtype");
var leadID = $(this).data("leadid");
var uniqueid = $(this).data("uniqueid");
var subject = $("#claimsmailbodycontainer .claimssubjectbody").val();
var mailbody = $("#claimsmailbodycontainer .claimsmailbody").val();
$.ajax({
type: "POST",
url: ajaxurl,
data: {
action : action,
claimtype : claimtype,
leadID : leadID,
uniqueid : uniqueid,
subject : subject,
mailbody : mailbody
},
success: function( result ){
}
});
});
在 PHP 函数中它看起来像这样
$mailbody = $_POST['mailbody'];
$headers = [];
$headers[] = 'From: '.$mailFrom;
$headers[] = 'Reply-To: '.$mailReplyTo;
$headers[] = 'Content-Type: text/html; charset=UTF-8';
$headers[] = 'X-Mailer: PHP/' . phpversion();
ob_start();
include_mail_template_php ($getPageLanguage.'/claimmail');
$message = ob_get_contents();
ob_end_clean();
// '%%text-body%%' is placeholder tag in the mail template for the $mailbody
$variables = array(
'%%text-body%%',
);
// set replacements for variables
$values = array(
$mailbody
);
$message = str_replace( $variables, $values, $message );
wp_mail($empfaenger, $subject, $message, $headers);
邮件中a标签的HTML是这样的。你不能点击 link.
<a+href="http://localhost/abc/page/?l=6194a9edac24c"+target="_blank">more</a>
添加1
在 jquery 调用的请求中,HTML 看起来仍然不错。
<a+href="http://localhost/abc/page/?l=6194a9edac24c"+target="_blank">hier</a>
占位符标记所在的邮件模板部分。此占位符将替换为邮件正文文本。
<table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
<td style="padding: 20px; font-family: sans-serif; font-size: 15px; line-height: 20px; color: #555555; background-color: white; white-space: pre-line; ">
<p style="margin: 0;">
%%text-body%%
</p>
</td>
</tr>
添加2
一天是从哪里来的。 我用 ACF 保存了一个文本,占位符是这样的
<a href="%%LinkInvoice%%" target="_blank">more</a>
您是否尝试过使用 wp_unslash()
函数。
在这种情况下的用法类似于:
$message = str_replace( $variables, $values, $message );
$message = wp_unslash( $message ); // Strip slashes here!
wp_mail($empfaenger, $subject, $message, $headers);
或者甚至...
// set replacements for variables
$values = array(
wp_unslash( $mailbody )
);
您的问题没有提供足够的信息来说明示例 <a>
标记输出的来源。